Я немного смущен относительно того, что делает (~a).toString(2)
.Что такое (~ a) .toString (2) делать?
Я знаком с бинарным и 1-м дополнением и дополнением 2s.
Итак, 5 000101 в 1-м дополнении и 2-х дополнит это число остается неизменным.
и -5 в 1s дополнению 111010 и 2s дополняют это 111011
Ни одно из этих чисел не связаны с 110 или 100
Так что я не понимаю, как бинарные результаты 110 и 100 в настоящее время полученный из числа 5 или -5.
Я также знаю, что дополнение 1s вычисляется путем перевертывания битов, и я знаю, что дополнение 2s вычисляется путем дополнения 1-го и добавления одного. Или ярлыком для хранения всех двоичных цифр вплоть до первого, который вы находите, начиная с дальнего права на крайнее левое, и переворачивая остальные. И я знаю, что для 1-го дополнения и 2-го дополнения к положительным числам вам нужен один ноль в левом углу, и больше, чем это нормально, но не нужно. И что для отрицательных чисел в 1s и 2s дополнение, вам нужно хотя бы один 1 в крайнем левом углу, и более того, это нормально, но не нужно. Но ни один из этих фактов не объясняет результат, который я вижу. (или, возможно, они это делают, но я не вижу этого)
Я читал, что тильда (~) переворачивает биты, но я не вижу, как этот результат получается.
a=5
(~a).toString(2)
"-110"
и
a=-5
-5
(~a).toString(2)
"100"
Это [побитовое NOT] (https: //developer.mozilla .org/ru/docs/Web/JavaScript/Reference/Operators/Bitwise_Operators # (Bitwise_NOT)) .... и [radix 2] (https://developer.mozilla.org/en-US/docs/Web/ JavaScript/Reference/Global_Objects/Number/toString # Parameters) преобразует его в соответствующую двоичную строку –
'toString (2)' преобразуется в двоичный файл, тильда ('~') является побитовым унарным оператором http://stackoverflow.com/questions/791328/how-do-the-bitwise-comple-operator-work – evolutionxbox
'~ 5 == -6' и' ~ -5 == 4'. Тайна решена. –