1) Какое число получится при сложении 83 и 76 в однобайтовом знаковом представлении (дополнительный код)? Затем переведите результат в число. Какое значение будет у полученного числа?
2) Какое число получится при вычитании 73 из -108 в однобайтовом знаковом представлении (дополнительный код)? Затем переведите результат в число. Какое значение будет у полученного числа?
3) Сколько единиц будет в коде, если число 59 сдвинуть 2 раза вправо, а после этого 3 раза влево?
4) Если IP-адрес равен 153.189.17.23, а маска равна 255.255.240.0, то какое значение будет у адреса сети?
Пошаговый ответ:
83 в однобайтовом знаковом представлении: 01010011
76 в однобайтовом знаковом представлении: 01001100
Сложение по битам:
01010011
+ 01001100
———-
10011111
Результат в обратном коде: 10011111
Дополнительный код получается инвертированием всех битов и добавлением единицы к младшему разряду:
10011111 (обратный код)
+ 1
———-
10100000 (дополнительный код)
Переведем полученный результат в число в десятичной системе:
10100000 в десятичной системе равно -96.
Значение полученного числа равно -96.
2) Для вычитания чисел в однобайтовом знаковом представлении в дополнительном коде, нужно вычесть их бинарные представления по битам, проигнорировав возможное переполнение.
-108 в однобайтовом знаковом представлении: 10011000
73 в однобайтовом знаковом представлении: 01001001
Вычитание по битам:
10011000
— 01001001
———-
11001111
Результат в обратном коде: 11001111
Дополнительный код получается инвертированием всех битов и добавлением единицы к младшему разряду:
11001111 (обратный код)
+ 1
———-
11010000 (дополнительный код)
Переведем полученный результат в число в десятичной системе:
11010000 в десятичной системе равно -80.
Значение полученного числа равно -80.
3) Для сдвига числа в однобайтовом представлении на определенное количество разрядов влево или вправо, нужно перемещать все биты числа на указанное количество позиций и заполнять освободившиеся позиции нулями. Если биты ссчитываются с конца, то сдвиг называется вправо, если с начала, то влево.
59 в однобайтовом представлении: 00111011
Сдвинем число 59 вправо на 2 разряда:
00111011 (исходное число)
>> 2
———
00001110 (результат сдвига)
В полученном числе после сдвига будет 2 единицы.