Представление информации в памяти компьютера
Перевод чисел между десятичной, двоичной, восьмеричной и шестнадцатеричной системами счисления.
Важно помнить, что в двоичной системе:
· четные числа оканчиваются на 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 | X2 | X 10, X 8 | X2 | |
0 | 000 | 4 | 100 | |
1 | 001 | 5 | 101 | |
2 | 010 | 6 | 110 | |
3 | 011 | 7 | 111 |
и таблицу двоичного представления чисел 0-15 (в шестнадцатеричной системе – 0-F16) в виде тетрад (групп из 4-х битов):
X 10 | X2 | X 10 | X16 | X2 | |
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; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!