Показать сообщение отдельно
  #41 (permalink)  
Старый 07.01.2011, 19:17
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

Сообщение от Kepa
Нет, вполне разобрался - суть в том что у нас нет отрицательного нуля, поэтому при поразрядном отрицании мы получаем отрицательное число, модуль которого на 1 больше изначального, и чтобы его привести к соответствию мы добавляем единицу. Просто чтобы "привыкнуть" к этому надо немного времени и практики (:
нет, суть в том, что мы заменяем вычитание сложением. Например, рассматриваем 4-битные числа. 16 - это по сути ноль (10000b)

заменяем вычитание сложением: a - b = a + 16-b (16-b - дополнение до двойки)

почему же это все-таки работает или что-то типа алгебраического смысла? a + 16-b = 16 + a-b. Т.е. мы к нулю (16) прибавляем положительное (a>b) либо отрицательное (a<b) число и оставляем четыре младших бита результата. А все значения, которые принимает число - зациклены (посмотри на таблицу, вверх - сложение, вниз - вычитание)

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

Kolyaj, но мы же не про IEEE 754 разговариваем
Ответить с цитированием