добавление «двоичных» чисел - PullRequest
1 голос
/ 23 сентября 2010

Каков результат добавления двоичных чисел 01000001 и 11111111 на 8-битном компьютере?

Ответы [ 7 ]

2 голосов
/ 23 сентября 2010

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

Для случая без знака стандарт требует, чтобы арифметика без знака выполнялась без вывода. В этом случае все вычисления выполняются по модулю 256.

1 голос
/ 23 сентября 2010

Целочисленное переполнение.

Если числа без знака (т.е. модульные), 0100000 (с модульной 8-битной математикой, сложение 11111111 равно вычитанию 1).

0 голосов
/ 02 января 2017

, если это только 8 бит, максимальное значение, которое вы можете получить, составляет 255 (1111 1111), если значение не подписано, и 127, если оно подписано (-128 является самым низким). Следовательно, выполнение этого дополнения вызовет переполнение, которое возвращается к 0, а затем продолжает отсчет. Думайте об этом как о количестве миль вашего автомобиля: если на счетчике может быть только, скажем, 8 цифр, а ваш счетчик равен 99 999 999 миль, если вы добавите еще одну, счетчик вернется к 0.

0 голосов
/ 23 сентября 2010

Если вы не хотите получить «неправильный результат быстро», ответ будет: 320 .

Правильное добавление двух чисел (в любом представлении) в любом месте (включая 8-битные машины) приводит куникальное число, которое может быть представлено множеством разных способов.

320 может быть представлено как 320 (обычное десятичное (основание-10) представление) или 101000000 (двоичное представление) или 2 5 3 4 1 3 1 2 0 1 0 0 (факторический), ...

0 голосов
/ 23 сентября 2010

Если оба значения без знака, то результат будет 320 в десятичном виде.Оба операнда повышаются до int перед добавлением, и стандарт требует, чтобы int имел по крайней мере 16 бит, даже на 8-битной машине.Вопрос не накладывает никаких ограничений на результат.

0 голосов
/ 23 сентября 2010
  • Если это целые числа со знаком, они представляют 65 и -128 -1.Добавление их даст -63 64.
  • Если это целые числа без знака, они представляют 65 и 255. Поскольку сумма не может быть представлена ​​в 8 битах, результат будет 64 ибудет установлен бит переполнения.
0 голосов
/ 23 сентября 2010

Я думаю, вы просто добавляете числа, а затем обрезаете переполненные биты (слева)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...