Javascript Tilde & Two дополнение

Два метода дополнения - генерирует -(x + 1).

например, когда JavaScript встречает Tilde, он использует этот метод:

~5 = -(5+1) = -6.

Изобразительное - позволяет глубже.

Теперь давайте поговорим о методе Two complement.

5        = 0000 0101
Flip     = 1111 1010
add one  = 1111 1011

поэтому 1111 1011 - -5.

как?

: flip:

0000 0100 

добавить один:

0000 0101

И так было -5.

Итак, как это происходит при ~5=-6?

где этот -6 появился?

Ответ 1

Прежде всего, вам нужно понять, что ~ - это побитовый флип-оператор, который не совпадает с оператором отрицания -. ~ выполняет только побитовое переключение, но оператор отрицания - выполняет побитовое переключение и добавляет один (для целых чисел).

Как вы уже объяснили, если вы хотите перейти от начального числа n к -n, используя два метода дополнения, вы побитовое flip/not n и добавьте 1. ~ n просто побитно, не означает что ~n=-n-1.

Например:

5               = 0000 0101
Flipped (~5)    = 1111 1010

Итак, какое число 1111 1010 представляет? Поскольку первая цифра равна 1, мы знаем ее отрицательное значение. Чтобы найти какое значение, сделайте

-(flip(1111 1010) + 1) =
-(0000 0101 + 1)
-(0000 0110) =
-6

Ответ 2

~5 = -(5 + 1) = -6

пока что так хорошо. Однако ~ не является двумя дополнениями, это оператор бинарной инверсии.

5     = 0000 0101
flip  : 1111 1010

который равен -6

ясно ли это?

Ответ 3

~ является оператором побитового NOT (только инвертирует биты его операнда).

Для положительного числа n,

~n + 1 = -n

Ответ 4

Tild (~) -

это просто flip (n). То есть ~ 5 = flip (5). В java script числа всегда имеют 64-разрядную подпись. давайте примем только 8 бит для справки,

 5==> 0000 0101 
~5 ==> filp(0000 0101)
~5 ==> 1111 1010 ==> -6 

2 'дополнение -

Это filp (n) + 1.

5 ==> 0000 0101
2 complement of 5 ==> flip(0000 0101) + 0000 0001
2 complement of 5 ==> 1111 1010 + 000 0001
2 complement of 5 ==> 1111 1011

Ответ 5

Два метода дополнения - генерирует -(x + 1).

Проще говоря, два дополнения не генерируют -(x + 1). Одно дополнение (т.е. ~/Побитовое НЕ/переворачивание бит) делает.

Два комплимента (переверните биты, добавьте 1) - это (-0 averse) операция/кодирование, используемая для выражения отрицательного число в чистых битах (и выводить из него). Два дополнения x будут генерировать -x.

~5 - это не что иное, как переворачивание бит 0000 0101 в 1111 1010.

Чтобы определить значение 1111 1010, вернемся к 0000 0101 и добавьте 1: 0000 0110 (-6).