Что такое обратный код?
Обратный код (по-английски — one's complement) двоичного числа получается инвертированием каждого бита: все нули превращаются в единицы, а все единицы — в нули. Поскольку результат напрямую зависит от количества используемых битов, нужно заранее выбрать разрядность — например, 4, 8, 16 или 32 бита. Такое представление применялось в ранних ЭВМ для кодирования знаковых целых чисел и до сих пор остаётся важным при изучении двоичной арифметики и контрольных сумм для обнаружения ошибок.
Как пользоваться калькулятором
Введите неотрицательное десятичное число, выберите разрядность — и калькулятор обрежет число до заданного количества битов, инвертирует все биты и покажет результат и в двоичном, и в десятичном виде. Если число не помещается в выбранную разрядность, перед инвертированием сохраняются только младшие биты, укладывающиеся в эту ширину.
Разбор формулы
Расчёт ведётся по формуле $$\text{Result} = \left(\sim\left(\text{Number} \,\&\, M\right)\right) \,\&\, M, \quad M = 2^{\text{Width}} - 1$$ Выражение \(2^{w} - 1\) — это маска из \(w\) единиц (для 8 бит это \(11111111 = 255\)). Побитовое НЕ (~) инвертирует каждый бит числа \(n\), а маска отбрасывает все биты выше выбранной разрядности, чтобы ответ оставался в допустимом диапазоне.
Пример с расчётом
Возьмём число 5 при разрядности 8 бит. В двоичном виде \(5 = 00000101\). Инвертируем каждый бит и получаем \(11111010\), что равно 250 в десятичной системе. Значит, обратный код числа 5 в 8 битах — это 250. А при разрядности 4 бита \(5 = 0101\), после инвертирования — \(1010 = 10\).
Частые вопросы
Чем обратный код отличается от дополнительного кода? Дополнительный код (two's complement) — это обратный код плюс единица. Такой приём убирает «двойное» представление нуля.
Чему равен обратный код нуля? При 8 битах это \(11111111 = 255\) — все биты становятся единицами.
Почему ответ меняется при разной разрядности? Инвертирование зависит от количества битов: чем больше разрядность, тем больше добавляется ведущих единиц, и тем больше получается десятичное значение.