Двоичная математика. Как работает унарный побитовый НЕ

alekciy

Новичок
Двоичная математика. Как работает унарный побитовый НЕ

Может кто на пальцах объяснить принцип работы унарного побитогово НЕ? На примере и как делается ручной расчет.

Предыстория. Я работал в VM которая мне выдала:
Код:
1> bnot 153.
-154
В описании команды сказано, что "unary bitwise not". Я так понимаю побитовый унарный НЕ. Почему тогда -154?

153 это 1001 1001, при инвертировании должно же быть 0110 0110, т.е. 102, откуда тогда -154?

Подозреваю, что дело в разрядности представления чисел в этой VM и представлено оно там более, чем 1 байтом, так же вопрос с разрядом знака тоже не ясен как и с тем, прямой код, обратный или дополнительный там, но может кто может и без этой информации объяснить получаемый результат?
 

Viktor_Rez

Новичок
Помню на ZX Spectrume с 16 Кб на борту на оксфордском диалектом (1986) L< C< E<K Вот такто то и появился Unix. =))
А по твоему вопросу - это легко предстаить на свойсту унитарной матрице. Когда ты получишь равеннство A в минус первой == но B унитарно представляет собой ортонормированный базис при своем исключении.
 

alekciy

Новичок
%(
Это ты с кем сейчас говоришь? ;)
Я хочуть понять логику машины. Как она берет биты, обрабытываешь их и почему на выходе получаем именно это, а так же как интерпретируется полученный результат. Я понимаю все прочие операции с двоичными данными, кроме того.
 

DiMA

php.spb.ru
Команда форума
откуда ты взял 154? никаким боком не может появится, если только не взять 16-ричную форму 153, нарисовать на листочке, перевернуть листь на 180° и обратно в 10-ричную форму перевести =)
 

alekciy

Новичок
DiMA
Это выдает VM Erlang-а. Я и пытаюсь понять, почему. Даже в рассылке просил расписать на пальцах, почему так. Вообще тут формула расчета f(Х)=-Х-1, только я ни как не пойму отчего в даже в официальной документации написано, что это побитовый НЕ. Для меня побитовый НЕ должен был выдать 102 если конечно это потом интерпретируется как целое беззнаковое. Но по результату видно, что знаковое, если предположить, что прямое кодирование и старший бит это знак то все равно не сходится даже если на целое уходит одно машинное слово.

Какие то объяснения я тут нашел http://en.wikipedia.org/wiki/Two's_complement только я не очень хорошо знаю инглиш и не врубаюсь как исходя из этого думают VM, дело видимо в том, что используется дополнительное кодирование, но даже исходя из этого у меня дебет с кредитом не сходится...
 
Сверху