1.3. Представление данных в эвм
Источниками и носителями информации могут быть сигналы любой природы: текст, речь, музыка и т.д. Однако хранение и переработка информации в ее естественном виде неудобна, а иногда и невозможна. В таких случаях применяется кодирование. Кодом называется правило, по которому сопоставляются различные алфавиты и слова (они появились в глубокой древности в виде тайнописи, когда ими пользовались для засекречивания важного сообщения). Исторически первый универсальный код, предназначенный для передачи сообщений, связан с именем изобретателя телеграфного аппарата Морзе и известен как азбука Морзе, где каждой букве или цифре соответствует своя последовательность из кратковременных, называемых точками, и длительных - тире сигналов, разделяемых паузами.
Компьютер, как известно, может обрабатывать информацию, представленную в числовой форме. Существуют различные способы записи чисел. Совокупность приемов записи и наименования чисел называется системой счисления. Можно указать два основных класса, на которые разделяются системы счисления - позиционные и непозиционные. Примером позиционной системы счисления является десятичная, непозиционной - римская система счисления.
В непозиционных системах количественное значение разряда определяется только его изображением и не зависит от его места (позиции) в числе. В ней вводится ряд символов для представления основных чисел, а остальные числа - результат их сложения и вычитания. Основные символы для обозначения десятичных разрядов в римской системе счисления: I – один, X – десять, C – сто, M – тысяча и их половины V – пять, L – пятьдесят, D – пятьсот. Натуральные числа записываются при помощи повторения этих цифр (например, II – два, III – три, XXX – тридцать, CC – двести). Если же большая цифра стоит перед меньшей цифрой, то они складываются, если наоборот – вычитаются (например, VII – семь, IX – девять). В непозиционных системах счисления не представляются дробные и отрицательные числа, поэтому нас будут интересовать только позиционные системы счисления.
Система счисления называется позиционной, если значение числа в ней определяется как символами, принятыми в системе, так и положением (позицией) этих символов в числе. Например:
123,45 = 1∙10 2 + 2∙10 1 + 3∙10 0 + 4∙10 –1 + 5∙10 –2,
или, в общем виде:
X (q) = x n-1 q n-1 + x n-2 q n-2 + … + x 1 q 1 + x 0 q 0 + x -1 q -1 + x -2 q -2 + … + x -m q –m .
Здесь X (q) – запись числа в системе счисления с основанием q;
x I – натуральные числа меньше q, т.е. цифры;
n – число разрядов целой части;
m – число разрядов дробной части.
Записывая слева направо цифры число, мы получим закодированную запись числа в q-ичной системе счисления.
X (q) = x n-1 x n-2 x
1 x 0 , x -1 x -2 x -m .
В информатике, вследствие применения электронных средств вычислительной техники, большое значение имеет двоичная система счисления, q = 2. На ранних этапах развития вычислительной техники арифметические операции с действительными числами производились в двоичной системе ввиду простоты их реализации в электронных схемах вычислительных машин. Отметим, что принцип действия базовых элементов цифровых вычислительных машин основан на двух устойчивых состояниях - проводится или нет электрический ток, или в каком направлении намагничен магнитный носитель и т.д. и для записи двоичного числа достаточно использовать только две цифры 0 и 1, соответствующих каждому из состояний. Таблица сложения и таблица умножения в двоичной системе будет иметь по четыре правила. И для реализации поразрядной арифметики в компьютере потребуется вместо двух таблиц по сто правил в десятичной системе счисления две таблицы по четыре правила в двоичной.
-
0 + 0 = 0
0 * 0 = 0
0 + 1 = 1
0 * 1 = 0
1 + 0 = 1
1 * 0 = 0
1 + 1 = 10
1 * 1 = 1
Соответственно на аппаратном уровне вместо двухсот электронных схем – восемь. Однако запись числа в двоичной системе счисления значительно длиннее записи того же числа в десятичной системе счисления. Это громоздко и неудобно для использования, так как обычно человек может одновременно воспринять не более пяти-семи единиц информации. Поэтому, наряду с двоичной системой счисления, в информатике имеют хождение восьмеричная (в ней запись числа в три раза короче, чем в двоичной системе счисления) и шестнадцатеричная системы счисления (в ней запись числа в четыре раза короче, чем в двоичной).
Так как десятичная система для нас удобна и привычна, все арифметические действия мы делаем в ней, и преобразование чисел из произвольной недесятичной (q ≠ 10) на основе разложения по степеням q. Преобразование из десятичной в прочие системы счисления производится с помощью правил умножения и деления. При этом целая и дробная части переводятся отдельно.
АЛФАВИТ 2-чной системы счисления: 0 1
АЛФАВИТ 8-ричной системы счисления: 0 1 2 3 4 5 6 7
АЛФАВИТ 10-чной системы счисления: 0 1 2 3 4 5 6 7 8 9
АЛФАВИТ 16-ричной системы счисления: 0 1 2 3 4 5 6 7 8 9 A B C D E F
Для перевода числа из десятичной системы счисления в любую другую систему счисления нужно делить «до упора» это число на основание той системы (основание системы – это количество символов в ее алфавите), в которую переводим число, а потом прочесть остатки справа налево. Для перевода числа из любой системы счисления в десятичную нужно умножить содержимое каждого разряда на основание системы в степени равной порядковому номеру разряда и всё сложить. Перевод числа из восьмеричной системы в двоичную осуществляется заменой слева направо восьмеричной цифры тремя двоичными цифрами. Перевод числа из двоичной системы счисления в восьмеричную осуществляется заменой справа налево каждой триады двоичных цифр на одну восьмеричную цифру.
Для перевода числа из десятичной системы счисления в любую другую систему счисления можно воспользоваться стандартной программой Калькулятор.
Набрав число и щелкнув на одном из переключателей Hex, Dec, Oct или Bin, получим представление этого числа в соответствующей системе.
Как отмечалось, двоичная система счисления, будучи естественной для ЭВМ, не удобна для восприятия человеком. Большое количество разрядов двоичного числа по сравнению с соответствующим десятичным, однообразное чередование единиц и нулей является источником ошибок и затруднений чтения двоичного числа. Для удобства записи и чтения двоичных чисел (но не для работы цифровых вычислительных машин!), необходима более удобная для записи и чтения система счисления. Такими являются системы с основанием 23 = 8 и 24 = 16, т.е. восьмеричная и шестнадцатеричная системы счисления. Названные системы удобны тем, что в них, с одной стороны, обеспечивается чрезвычайно легкий перевод из двоичной системы (а также обратный перевод), т.к. основание системы – степень числа 2, с другой - сохраняется компактный вид числа. Восьмеричная система широко использовалась для записи машинных программ в ЭВМ 1 и 2 поколений. В настоящее время используется, в основном,
шестнадцатеричная система. Приведем пример соответствия шестнадцатеричной и двоичной системы:
Пример для тетрад:
0000 = 0; 0001 = 1; 0010 = 2; 0011 = 3; 0100 = 4; 0101 = 5; 0110 = 6; 0111 = 7; 1000 = 8; 1001 = 9; 1010 = A; 1011 = B; 1100 = C; 1101 = D; 1110 = E; 1111 = F.
В ЭВМ используется представление информации в виде «машинного слова», длина которого равна некоторому числу бит, характерному для данного типа ЭВМ. В ЭВМ первых поколений использовались машинные слова различной длины, например 45 бит и т.д., то есть не равные целому числу байт. В современных компьютерах длина слова обычно 4 или 8 байт (в первых моделях персональных компьютеров было 1 или 2 байта).
Слово в машинной памяти
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
|
|
|
|
|
|
|
|
|
|
|
1 |
0 |
0 |
0 |
1 |
старший байт младший байт
слово