~8은 컴퓨터에서 -9가 정확히 표현되는 방식이기 때문입니다. . . . 32비트 부호 없는 정수는 0 ~ 2^32-1의 양의 정수 범위를 나타낼 수 있으며, 이는 2^32 정수를 나타낼 수 있습니다. 0 ~ 2^32-1的正整数范围,这样可以表示2^32个整数。 当作为有符号数的时候,不是把最高的比特位作为符号位,即 -1 不是直接把000..001 的最高bit置为 1 ,而是使用其 -1 + 2^32 = 2^32-1 对应的二进制数表示。这种形式叫做补码。一种最快的求负数补码的方式是,其绝对值的二进制,从低位开始,遇到的第一个 1 之前(包括这个1)不变,其他的 1 变 0, 0 变 1。 比如 -4 的补码是, 4 -> 00...0100 -> 11...1100
你说的对,去反就是最大的值-当前的值 这是对于无符号整数来说的。 只是除了>>>부호 있는 숫자로 사용하는 경우 최상위 비트를 부호 비트, 즉 -1로 사용하는 대신 000..001의 최상위 비트를 직접 설정하는 대신 >에서 1로, 대신 -1 + 2^32 = 2^32-1의 해당 이진수 표현을 사용하세요. 이 형식을 2의 보수라고 합니다. 음수의 보수를 찾는 가장 빠른 방법 중 하나는 낮은 비트부터 시작하여 처음 1(이 1 포함)이 발견되고 변경되지 않고 다른 1이 0이 되기 전에 절대값의 이진수 값을 사용하는 것입니다. 0은 1이 됩니다. 예를 들어, -4의 보수는 4 -> 00...0100 ->
이것의 장점은 연산 규칙을 줄여준다는 것입니다. 덧셈과 뺄셈을 할 때 컴퓨터가 부호가 있는지 없는지 구분할 필요가 없습니다. 예를 들어 4비트 쉐이핑입니다. 부호 있는 -5 + 4 = -1 이진 표현은 1011 + 0100 = 1111인 반면, 부호 없는 11+4=15 이진 표현은 다음과 같습니다. 1011 + 0100 = 1111이기도 합니다. 1101을 사용하여 -5를 표현하면 부호 있는 덧셈은 1101 + 0100 = 1111이 됩니다. 이는 사람에게도 불편하고 컴퓨터에도 불편합니다. . 🎜
🎜맞습니다. 그 반대는 최대값 - 현재값입니다. 이는 부호 없는 정수에 대한 것입니다. >>>를 제외하고 JS 비트 연산자의 반환 값은 부호 있는 32비트 정수입니다. 🎜
으아악
~8은 컴퓨터에서 -9가 정확히 표현되는 방식이기 때문입니다. . . .
32비트 부호 없는 정수는
0 ~ 2^32-1
의 양의 정수 범위를 나타낼 수 있으며, 이는2^32
정수를 나타낼 수 있습니다.0 ~ 2^32-1
的正整数范围,这样可以表示2^32
个整数。当作为有符号数的时候,不是把最高的比特位作为符号位,即
-1
不是直接把000..001
的最高bit置为 1 ,而是使用其-1 + 2^32
=2^32-1
对应的二进制数表示。这种形式叫做补码。一种最快的求负数补码的方式是,其绝对值的二进制,从低位开始,遇到的第一个 1 之前(包括这个1)不变,其他的 1 变 0, 0 变 1。 比如 -4 的补码是, 4 ->00...0100
->11...1100
这样做的好处是,减少运算规则,对于加法和减法,计算机不必区分是不是有符号的。比如 4 位的整形。 有符号的
-5 + 4 = -1
二进制表示是1011 + 0100 = 1111
,而无符号的11+4=15
二进制形式也是1011 + 0100 = 1111
。如果用1101
表示-5
那么有符号加法就是1101 + 0100 = 1111
,这样,人看起来不方便,计算机也不方便。你说的对,去反就是
이것의 장점은 연산 규칙을 줄여준다는 것입니다. 덧셈과 뺄셈을 할 때 컴퓨터가 부호가 있는지 없는지 구분할 필요가 없습니다. 예를 들어 4비트 쉐이핑입니다. 부호 있는最大的值-当前的值
这是对于无符号整数来说的。 只是除了>>>
부호 있는 숫자로 사용하는 경우 최상위 비트를 부호 비트, 즉-1
로 사용하는 대신000..001
의 최상위 비트를 직접 설정하는 대신 >에서 1로, 대신-1 + 2^32
=2^32-1
의 해당 이진수 표현을 사용하세요. 이 형식을 2의 보수라고 합니다. 음수의 보수를 찾는 가장 빠른 방법 중 하나는 낮은 비트부터 시작하여 처음 1(이 1 포함)이 발견되고 변경되지 않고 다른 1이 0이 되기 전에 절대값의 이진수 값을 사용하는 것입니다. 0은 1이 됩니다. 예를 들어, -4의 보수는 4 ->00...0100
->-5 + 4 = -1
이진 표현은1011 + 0100 = 1111
인 반면, 부호 없는11+4=15
이진 표현은 다음과 같습니다.1011 + 0100 = 1111
이기도 합니다.1101
을 사용하여-5
를 표현하면 부호 있는 덧셈은1101 + 0100 = 1111
이 됩니다. 이는 사람에게도 불편하고 컴퓨터에도 불편합니다. . 🎜 🎜맞습니다. 그 반대는최대값 - 현재값
입니다. 이는 부호 없는 정수에 대한 것입니다.>>>
를 제외하고 JS 비트 연산자의 반환 값은 부호 있는 32비트 정수입니다. 🎜 으아악역전? 비트별 NOT, 비트별 NOT을 수행한 결과는 값의 보수를 반환하는 것입니다.
여기서 비트 부정은 진정한 비트 부정이 아니기 때문입니다.
补码运算
.자세한 내용은 이 질문을 참조하세요. js에서 비트 부정을 이해하는 방법은 무엇인가요?
반전 연산은 부호 비트도 반전합니다. 자세한 내용은 "JavaScript 고급 프로그래밍" 3.5.2 비트 연산
을 참조하세요.으아아아