дополнительный код числа 310 в однобайтовом формате имеет вид
Прямой, дополнительный и обратный коды
Прямой, дополнительный и обратный код числа (создан по запросу).
Далее идет калькулятор, который переводит введенное положительное или отрицательное целое число в двоичный код, а также выводит обратный код этого числа и его дополнительный код. Под калькулятором, как водится, немного теории.
Обновление: Из комментариев становится ясно, что люди не вполне понимают, что делает этот калькулятор. Точнее, что делал — применял алгоритм вычисления дополнительного кода к любому числу. Люди хотят, чтобы он им просто показывал дополнительный код числа. Ну хорошо — теперь при вводе положительного числа калькулятор показывает представление числа в двоичной форме, ибо для него нет обратного и дополнительного кода, а при вводе отрицательного показывает дополнительный и обратный код.
Прямой, дополнительный и обратный код
Прямой код числа это представление беззнакового двоичного числа. Если речь идет о машинной арифметике, то как правило на представление числа отводится определенное ограниченное число разрядов. Диапазон чисел, который можно представить числом разрядов n равен
Обратный код числа, или дополнение до единицы (one’s complement) это инвертирование прямого кода (поэтому его еще называют инверсный код). То есть все нули заменяются на единицы, а единицы на нули.
Дополнительный код числа, или дополнение до двойки (two’s complement) это обратный код, к младшему значащему разряду которого прибавлена единица
А теперь «зачем, зачем это все?» ©
Для различия положительных и отрицательных чисел выделяют старший разряд числа, который называется знаковым (sign bit)
0 в этом разряде говорит нам о том, что это положительное число, а 1 — отрицательное.
С положительными числами все вроде бы понятно, для их представления можно использовать прямой код
0 — 0000
1 — 0001
7 — 0111
А как представить отрицательные числа?
И это оказалось очень удобно для машинных вычислений — при таком представлении отрицательного числа операции сложения и вычитания можно реализовать одной схемой сложения, при этом очень легко определять переполнение результата (когда для представления получившегося числа не хватает разрядности)
Пара примеров
7-3=4
0111 прямой код 7
1101 дополнительный код 3
0100 результат сложения 4
-1+7=6
1111 дополнительный код 1
0111 прямой код 7
0110 результат сложения 6
Что касается переполнения — оно определяется по двум последним переносам, включая перенос за старший разряд. При этом если переносы 11 или 00, то переполнения не было, а если 01 или 10, то было. При этом, если переполнения не было, то выход за разряды можно игнорировать.
Примеры где показаны переносы и пятый разряд
00111 прямой код 7
00001 прямой код 1
01110 переносы
01000 результат 8 — переполнение
Два последних переноса 01 — переполнение
-7+7=0
00111 прямой код 7
01001 дополнительный код 7
11110 переносы
10000 результат 16 — но пятый разряд можно игнорировать, реальный результат 0
Два последних переноса 11 з перенос в пятый разряд можно отбросить, оставшийся результат, ноль, арифметически корректен.
Опять же проверять на переполнение можно простейшей операцией XOR двух бит переносов.
Вот благодаря таким удобным свойствам дополнительный код это самый распространенный способ представления отрицательных чисел в машинной арифметике.
Обратный и дополнительный коды двоичных чисел
Пример перевода
x1=10101-[x1]пр=010101
x2=-11101-[x2]пр=111101
x3=0,101-[x3]пр=0,101
x4=-0,111-[x4]пр=1,111
2) Обратный код числа, используется для выполнения арифметических операций вычитания, умножения, деления, через сложение. Обратный код положительного числа совпадает с его прямым кодом, обратный код отрицательного числа формируется по правилам: в знаковом разряде записывается “1”; цифровые значения меняются на противоположные.
3) Дополнительный код числа, имеет такое же назначение, как и обратный код числа. Формируется по следующим правилам: положительные числа в дополнительном коде выглядят также как и в обратном и в прямом коде, т.е. не изменяются. Отрицательные числа кодируются следующим образом: к обратному коду отрицательного числа (к младшему разряду) добавляется 1, по правилу двоичной арифметики.
Пример перевода
x1=10101-[x1]доп=010101
x2=-11101-[x2]обр=100010+1-[x2]доп=100011
x3=0,101-[x3]доп=0,101
x4=-0,111-[x4]обр=1,000+1-[x4]доп=1,001
Для выявления ошибок при выполнении арифметических операций используются также модифицированные коды: модифицированный прямой; модифицированный обратный; модифицированный дополнительный, для которых под код знака числа отводится два разряда, т.е. “+”=00; ”-”=11. Если в результате выполнения операции в знаковом разряде появляется комбинация 10 или 01 то для машины это признак ошибки, если 00 или 11 то результат верный.
Пример выполнения работы
Задание 1.Переведите число 253,48 из восьмеричной системы счисления в десятичную систему счисления.
Задание 2.Переведите число 48,6710 из десятичной системы счисления в двоичную систему счисления с точностью 3 знака после запятой.
48:2 = 24 (0)
Задание 3.Переведите число 62,710 из десятичной системы счисления в шестнадцатеричную систему счисления с точностью 4 знака после запятой.
Остаток
Задание 4.Выполните указанные действия над двоичными числами:
+ 1011
Задание 5.Переведите число 2FC,3A16 из шестнадцатеричной системы счисления в двоичную и восьмеричную системы счисления. (Примечание. Использовать Табл.3)
Задание 6.Выберите число, которое является минимальным среди следующих чисел: 1110012, 648, 3816, 5910.
Задание 7.Если обратный код целого числа x имеет вид 111001012, то чему будет равно его значение в десятичной системе счисления.
Задание 8.Какой вид имеет дополнительный двоичный код числа 510 в однобайтовом формате.
5:2 = 2 (1)
Тогда 510=1012. Известно, что 1байт = 8бит. Первая цифра указывает на знак числа, а следующие семь цифр указывают на количественное значение числа. Поэтому дописываем 4 нуля перед 101 и еще один нуль записываем самым первым, он указывает на то, что число положительное.
Задание 9.Найдите основание системы счисления, если 2010 = 14X.
Предположим, X=8, тогда
20:8 = 2 (4)
Следовательно, 2010 = 24X, не подходит.
Предположим, X=16, тогда
20:16 = 1 (4)
Задание 10.Установите соответствие между выражением: (-1110 + 310 =) и выражением в дополнительном двоичном коде.
Прямой, обратный и дополнительный коды двоичного числа
Прямой код двоичного числа
Обратный код двоичного числа
Дополнительный код двоичного числа
Мы знаем, что десятичное число можно представить в двоичном виде. К примеру, десятичное число 100 в двоичном виде будет равно 1100100, или в восьмибитном представлении 0110 0100. А как представить отрицательное десятичное число в двоичном виде и произвести с ним арифметические операции? Для этого и предназначены разные способы представления чисел в двоичном коде.
Сразу отмечу, что положительные числа в двоичном коде вне зависимости от способа представления (прямой, обратный или дополнительный коды) имеют одинаковый вид.
Прямой код
Обратный код
Для неотрицательных чисел обратный код двоичного числа имеет тот же вид, что и запись неотрицательного числа в прямом коде.
Для отрицательных чисел обратный код получается из неотрицательного числа в прямом коде, путем инвертирования всех битов (1 меняем на 0, а 0 меняем на 1).
Для преобразования отрицательного числа записанное в обратном коде в положительное достаточного его проинвертировать.
Арифметические операции с отрицательными числами в обратном коде:
Дополнительный код
В дополнительном коде (как и в прямом и обратном) старший разряд отводится для представления знака числа (знаковый бит).
Арифметические операции с отрицательными числами в дополнительном коде
Вывод:
1. Для арифметических операций сложения и вычитания положительных двоичных чисел наиболее подходит применение прямого кода
2. Для арифметических операций сложения и вычитания отрицательных двоичных чисел наиболее подходит применение дополнительного кода
(34 голосов, оценка: 4,68 из 5)
Пример выполнения работы
Задание 1.Переведите число 253,48 из восьмеричной системы счисления в десятичную систему счисления.
Задание 2.Переведите число 48,6710 из десятичной системы счисления в двоичную систему счисления с точностью 3 знака после запятой.
48:2 = 24 (0)
Задание 3.Переведите число 62,710 из десятичной системы счисления в шестнадцатеричную систему счисления с точностью 4 знака после запятой.
Остаток
Задание 4.Выполните указанные действия над двоичными числами:
+ 1011
Задание 5.Переведите число 2FC,3A16 из шестнадцатеричной системы счисления в двоичную и восьмеричную системы счисления. (Примечание. Использовать Табл.3)
Задание 6.Выберите число, которое является минимальным среди следующих чисел: 1110012, 648, 3816, 5910.
Задание 7.Если обратный код целого числа x имеет вид 1.11001012, то чему будет равно его значение в десятичной системе счисления.
Задание 8.Какой вид имеет дополнительный двоичный код числа 510 в однобайтовом формате.
5:2 = 2 (1)
Тогда 510=1012. Известно, что 1байт = 8бит. Первая цифра указывает на знак числа, а следующие семь цифр указывают на количественное значение числа. Поэтому дописываем 4 нуля перед 101 и еще один нуль записываем самым первым, он указывает на то, что число положительное.
Задание 9.Найдите основание системы счисления, если 2010 = 14X.
Предположим, X=8, тогда
20:8 = 2 (4)
Следовательно, 2010 = 24X, не подходит.
Предположим, X=16, тогда
20:16 = 1 (4)
Задание 10.Установите соответствие между выражением: (-1110 + 310 =) и выражением в дополнительном двоичном коде.
Введем следующие обозначения:
В прямых кодах эти числа имеют вид:
В дополнительных кодах:
Задания для самостоятельного выполнения
Задание 1.Переведите число из указанной системы счисления (см. вариант) в десятичную систему счисления.
Варианты | Задание | Варианты | Задание |
1. | 242,88 | 2. | A2F,C16 |
3. | 161,28 | 4. | 12B,816 |
5. | 146,28 | 6. | 22C,816 |
7. | 103,248 | 8. | 172,28 |
9. | 11D,416 | 10. | 12F,816 |
Задание 2.Переведите число (см. вариант) из десятичной системы счисления в двоичную систему счисления с точностью 3 знака после запятой.
Варианты | Задание | Варианты | Задание |
1. | 51,7610 | 2. | 57,4910 |
3. | 39,5410 | 4. | 64,510 |
5. | 56,4210 | 6. | 61,2910 |
7. | 47,2910 | 8. | 54,6110 |
9. | 45,3110 | 10. | 65,5210 |
Задание 3.Переведите число (см. вариант) из десятичной системы счисления в шестнадцатеричную систему счисления с точностью 4 знака после запятой.
Варианты | Задание | Варианты | Задание |
1. | 82,210 | 2. | 71,610 |
3. | 84,910 | 4. | 52,1510 |
5. | 73,810 | 6. | 73,410 |
7. | 67,210 | 8. | 91,310 |
9. | 80,410 | 10. | 86,510 |
Задание 4.Выполните указанные действия над двоичными числами:
Варианты | Задание | Варианты | Задание |
1. | a. 110012 + 10012; b. 10112 * 1012. | 2. | a. 100012 + 1112; b. 10102 * 112. |
3. | a. 1100102 + 11012; b. 1012 * 1012. | 4. | a. 101012 + 10112; b. 1002 * 112. |
5. | a. 1010112 + 10012; b. 10112 * 112. | 6. | a. 100012 + 101012; b. 1112 * 1012. |
7. | a. 110102 + 10112; b. 10002 * 112. | 8. | a. 10012 + 10012; b. 10012 * 10012. |
9. | a. 100012 + 10112; b. 1002 * 1012. | 10. | a. 100012 + 1112; b. 101012 * 112. |
Задание 5.Переведите число из указанной системы счисления (см. вариант) в двоичную и восьмеричную(шестнадцатеричную) системы счисления. (Примечание. Использовать Табл.3)
Варианты | Задание | Варианты | Задание |
1. | 2AC,3B16 | 2. | 426,358 |
3. | 9A1,F216 | 4. | 173,468 |
5. | 42A,1816 | 6. | 532,418 |
7. | 8E1,A16 | 8. | D2,A16 |
9. | 412,738 | 10. | 317,128 |
Задание 6.
Варианты | Задание |
1. | Выберите число, которое является минимальным среди следующих чисел: 10000002, 628, 3916, 5210. |
2. | Расположите числа в порядке возрастания: 1100102, 738, 4016, 6110. |
3. | Выберите число, которое является максимальным среди следующих чисел: 1000012, 528, 4216, 6310. |
4. | Расположите числа в порядке убывания: 1010012, 438, 3616, 5210. |
5. | Выберите число, которое является минимальным среди следующих чисел: 1001102, 238, 2316, 2310. |
6. | Расположите числа в порядке убывания: 1101112, 768, 3A16, 5410. |
7. | Выберите число, которое является максимальным среди следующих чисел: 110012, 248, 2416, 2410. |
8. | Выберите число, которое является минимальным среди следующих чисел: 110012, 238, 2316, 2310. |
9. | Расположите числа в порядке убывания: 1100102, 738, 2B16, 7410. |
10. | Расположите числа в порядке возрастания: 1000102, 328, 3216, 3210. |
Задание 7.Если обратный код целого числа X имеет указанный вид (см. вариант), то чему будет равно его значение в десятичной системе счисления.
Варианты | Задание | Варианты | Задание |
1. | 1.11000012 | 2. | 1.10001102 |
3. | 0.00001012 | 4. | 1.11101102 |
5. | 1.11100012 | 6. | 1.11110012 |
7. | 1.11011012 | 8. | 1.11101012 |
9. | 1.11100112 | 10. | 0.00011012 |
Задание 8.Какой вид имеет дополнительный двоичный код указанного числа (см. вариант) в однобайтовом формате.
Варианты | Задание | Варианты | Задание |
1. | -510 | 2. | 210 |
3. | -410 | 4. | 310 |
5. | -210 | 6. | 710 |
7. | 1010 | 8. | 910 |
9. | 1310 | 10. | -810 |
Задание 9.Найдите основание системы счисления, если
Варианты | Задание | Варианты | Задание |
1. | 1410 = 16X | 2. | 1010 = 12X |
3. | 510 = 12X | 4. | 1710 = 11X |
5. | 410 = 11X | 6. | 310 = 11X |
7. | 2110 = 15X | 8. | 2410 = 30X |
9. | 2210 = 26X | 10. | 210 = 10X |
Задание 10.Установите соответствие между указанным выражением (см. вариант) и выражением в дополнительном двоичном коде.
Контрольные вопросы
1. Что понимают под системой счисления?
2. В чем отличие позиционной системы счисления от непозиционной?
3. Что понимают под алфавитом и основанием системы счисления?
4. Какие системы счисления используются при работе с компьютером?
5. Каковы правила перевода чисел из одной системы счисления в другую?
6. Каковы правила выполнения арифметических операций с двоичными числами?
7. Охарактеризуйте машинные двоичные коды: прямой, обратный и дополнительный?