Представление информации в памяти компьютера



Перевод чисел между десятичной, двоичной, восьмеричной и шестнадцатеричной системами счисления.

Важно помнить, что в двоичной системе:

· четные числа оканчиваются на 0, нечетные – на 1; числа, которые делятся на 4, оканчиваются на 00, и т.д.; числа, которые делятся на 2k, оканчиваются на k нулей; если число N принадлежит интервалу 2k-1 £ N < 2k, в его двоичной записи будет всего k цифр, например, для числа 125:

              26 = 64£125<128 = 27, 125 = 11111012 (7 цифр),

· числа вида 2k записываются в двоичной системе как единица и k нулей, например: 16 = 24 = 100002, числа вида 2k-1 записываются в двоичной системе k единиц, например:15 = 24-1 = 11112, если известна двоичная запись числа N, то двоичную запись числа 2·N можно легко получить, приписав в конец ноль, например:15 = 11112, 30 = 111102, 60 = 1111002,120 = 11110002.

· желательно выучить наизусть таблицу двоичного представления чисел 0-7 в виде триад (групп из 3-х битов):

X 10, X 8 2 X 10, X 8 2
0 000   4 100
1 001   5 101
2 010   6 110
3 011   7 111

и таблицу двоичного представления чисел 0-15 (в шестнадцатеричной системе – 0-F16) в виде тетрад (групп из 4-х битов):

X 10 2 X 10 16 2
0 0000   8 8 1000
1 0001   9 9 1001
2 0010   10 A 1010
3 0011   11 B 1011
4 0100   12 C 1100
5 0101   13 D 1101
6 0110   14 E 1110
7 0111   15 F 1111

· отрицательные целые числа хранятся в памяти в двоичном дополнительном коде (подробнее см. презентацию «Компьютер изнутри»),

· для перевода отрицательного числа (- a ) в двоичный дополнительный код нужно сделать следующие операции:

- перевести число a-1 в двоичную систему счисления;

- сделать инверсию битов: заменить все нули на единицы и единицы на нули в пределах разрядной сетки (см. пример далее).

Пример. Для хранения целого числа со знаком используется один байт. Сколько единиц содержит внутреннее представление числа (-78)? 1) 3, 2) 4      3) 5, 4) 6.

Решение: переводим число 78 в двоичную систему счисления: 78 = 64 + 8 + 4 + 2 = 26 + 23 + 22 + 21 = 10011102, по условию число занимает в памяти 1 байт = 8 бит, поэтому нужно представить число с помощью 8 разрядов, чтобы получилось всего 8 разрядов (бит), добавляем впереди один ноль: 78 = 010011102, делаем инверсию битов (заменяем везде 0 на 1 и 1 на 0): 010011102 →101100012 , добавляем к результату единицу 101100012 + 1 = 101100102 это и есть число (-78) в двоичном дополнительно коде в записи этого числа 4 единицы таким образом, верный ответ – 2 .

И еще, нужно не забыть в конце добавить единицу, причем это может быть не так тривиально, если будут переносы в следующий разряд – тут тоже есть шанс ошибиться из-за невнимательности.

Прямой код целого числа – это двоичное представление этого числа. Старший разряд является знаковым (0 - для положительного числа, 1 - для отрицательного числа). В остальных разрядах записывается двоичное представление модуля числа.

Обратный и дополнительный коды положительного числа совпадают с прямым кодом.

Пример 2.Дано число X=5. Перевести число в прямой, обратный и дополнительный коды. Xпр= Хобр= Хдоп=00000101.

Обратный код отрицательного числа– это инверсия модуля двоичного кода (все цифры, кроме знакового разряда, заменяются на противоположные: 0 на 1, а 1 на 0).

Пример 3.Дано числоX=-5.Перевести число в обратный код. Хпр =10000101, Хобр=11111010.

Дополнительный код отрицательного числаобразуется путем добавления 1 к младшему разряду обратного кода.

Пример 4.Дано числоX=-5. Перевести число в дополнительный код.

Хпр =10000101 Хобр=11111010, Хдоп=11111010+1 =11111011.

Пример 5.Дано целое число 310. Определить дополнительный код данного числа в однобайтовом формате.

Решение: Так как обратный и дополнительный код положительного числа совпадает с прямым кодом, то 310 = 112 =00000011.

Пример 6. Обратный код целого числа имеет вид X=100110102. Определить значение данного числа в десятичной системе счисления.

Решение:

Хобр=10011010, Хпр =11100101111001012 = 1 26 + 1 25 + 1 22 + 1 20 = 64+32+4+1 =-10110.

Пример 7.Дано число-5010.Определить дополнительный код данного числа в 8-битном формате.

Решение: -5010 = 1100102 =10110010 =11001101 + 1 =110011102.

Пример 8.Дополнительный код целого числа имеет вид X=101100112. Определить десятичное значение данного числа.

Решение: 101100112 -1=10110010 →11001101110011012 = 1 26 + 1 23 + 1 22 + 1 20 = 64+8+4+1 =-7710.

Следует отметить, что целые числа хранятся в компьютере в двоичном формате. При вводе число записывается в привычной для нас десятичной системе счисления, а компьютер переводит его в двоичную систему.

Для хранения целого числа в оперативной памяти выделяется фиксированное число байтов: один, два, четыре или восемь. Неотрицательные и отрицательные числа хранятся в памяти компьютера по-разному. Один, старший, двоичный разряд отводится под обозначение знака числа. Ноль в старшем разряде означает, что хранится неотрицательное число, единица означает, что число отрицательное.

Применяются три формы кодирования целых чисел: прямой код, обратный код, дополнительный код.

Прямой код

Правило

Для представления числа в прямом коде n-разрядного формата нужно перевести число в двоичную систему счисления и дополнить слева нулями до n знаков. Так как старший разряд числа отводится для знака, а оставшиеся n – 1 разрядов – для значащих цифр, то в знаковый разряд записать 1, если число отрицательное, и оставить 0, если число положительное.

Например, формат хранения целого однобайтного числа имеет вид:

Таким образом, число 310 в прямом коде однобайтного формата будет представлено в виде:

0 0 0 0 0 0 1 1

Число –310 в прямом коде однобайтного формата имеет вид:

1 0 0 0 0 0 1 1

Обратный код. Дополнительный код

Использование чисел со знаком (прямого кода представления чисел) усложняет структуру компьютера. В этом случае операция сложения двух чисел, имеющих разные знаки, должна быть заменена на операцию вычитания меньшей величины из большей и присвоения результату знака большей величины. Поэтому в современных компьютерах, как правило, отрицательные числа представляют в виде дополнительного или обратного кодов, что при суммировании двух чисел с разными знаками позволяет заменить вычитание на обычное сложение.

Правило

Для представления отрицательного числа в обратном коде n-разрядного формата нужно модуль отрицательного числа записать в прямом коде n двоичных разрядах (перевести число в двоичную систему счисления и дополнить слева нулями до n знаков). Значения всех знаков инвертировать (нули заменить единицами, единицы нулями).

Для представления отрицательного числа в дополнительном коде n-разрядного формата нужно представить его в обратном коде и прибавить 1 к последнему разряду числа.

Заметим, что положительные целые числа в прямом, обратном и дополнительном кодах изображаются одинаково – двоичными кодами с цифрой 0 в знаковом разряде.

Примеры

1. Найти дополнительный код в однобайтном формате числа Х = 710 . Число является целым положительным, его дополнительный код совпадает с прямым кодом. Представим число в двоичной системе и дополним нулями слева до 8 знаков. Ответ: Х = 00000111.

2. Найти обратный код в однобайтном формате числа Х = –3510 . Представим модуль числа Х в двоичной системе и дополним нулями слева до 8 знаков: 00100011. Инвертируем значения всех знаков: 11011100. Ответ: Х = 11011100.

3. Найти дополнительный код в двухбайтном формате числа Х = –56210

Представим модуль числа Х в двоичной системе и дополним нулями слева до 16 знаков: 0000001000110010. Инвертируем значения всех знаков: 1111110111001101, прибавим к полученному обратному коду 1, получим: 1111110111001110. Ответ: Х = 1111110111001110.

4. Дополнительный код числа Х имеет значение 111001112. Найти его значение в десятичной системе счисления. Т.к. в первой позиции числа стоит 1, то искомое число будет отрицательным. Вычтем из заданного значения 1 (11100111 – 1 = 11100110). Инвертируем значения всех знаков: 00011001. Переведем полученное число в десятичную систему 000110012 = 2510 и не забудем, что число является отрицательным. Ответ: Х = –25.


Дата добавления: 2019-09-08; просмотров: 237; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!