Понимание своего дополнения - PullRequest
0 голосов
/ 07 февраля 2019

У меня просто быстрый вопрос относительно дополнения двоичными числами, которое, возможно, кто-то может помочь мне понять.

Я готовлюсь к тесту компьютерной безопасности и практикуюсь в преобразовании десятичных чисел в двоичные числа и затем использованииодин и два дополнения.Мне дано десятичное число 237 и преобразовано в 11101101 в двоичном виде.Я понимаю, что в дополнение вы меняете биты, и это просто.Когда я перевернул его, я получил 00010010, но в ответе не учитываются первые три 0.Любой шанс, что кто-то может объяснить мне, почему это так?

Ответы [ 2 ]

0 голосов
/ 13 июля 2019

Те, которые ведут 0, не имеют никакого значения.В основном, в десятичном виде можно сказать, что 07 == 7 == 00000000007, поэтому в двоичном формате равно 00010010 == 10010 == 0000000000000010010.

0 голосов
/ 07 февраля 2019

Значение 237 слишком велико, чтобы его можно было сохранить в одном 8-битном байте со знаком со своим дополнением.Если бы вместо этого он хранился в 16-битном int, он и его отрицания в дополнение к нему имели бы соответствующие представления в базе 2:

0000000011101100

1111111100010011

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

...