비트 비연산자
조작의 이유(~0);
-1 이 되지 프린트 - 1 - 2 수 0 이 1 이 1 이 이 이 。왜??
너는 사실 꽤 친하다.
바이너리에서는 0이 아닌1이어야 합니다.
네, 한 조각에 대해서 얘기하면 이게 딱 맞습니다.
,,int
0으로 0으로 32로 하다!~
32면 0면 32면 1면 1이에요.
System.out.println(Integer.toBinaryString(~0));
// prints "11111111111111111111111111111111"
이 두입니다.-1
.
마찬가지로:
System.out.println(Integer.toBinaryString(~1));
// prints "11111111111111111111111111111110"
부호 , 「32」입니다.int
2의 보형 표현으로, 2의 보형 표현으로, 2의 보형 표현으로, 2의 보형 표현은 2의 보형 표현이다.~1 == -2
.
추가 정보:
- 2의 보완
- 이는 Java(특히)가 부호화된 수치(비트)를 나타내기 위해 사용하는 시스템입니다.
- 연산자 JLS 15.15.5
~
- "는 하세요.
~x
는 「」와 같습니다.(-x)-1
- "는 하세요.
실제로는 ~0x00000000 이므로 0xFFFFFF가 됩니다.자바에서 (서명된) int의 경우 -1을 의미합니다.
부호 있는 숫자의 첫 번째 비트는 -(2x -1)라고 생각할 수 있습니다.여기서 x는 비트 수입니다.
따라서 8비트 숫자가 지정되면 각 비트의 값(왼쪽에서 오른쪽 순서)은 다음과 같습니다.
-128 64 32 16 8 4 2 1
2진법에서는 0은 분명히 모두 0입니다.
-128 64 32 16 8 4 2 1
0 0 0 0 0 0 0 0 0 = 0
비트가 아닌 를 할 때~
아, 0, 1이 됩니다.
-128 64 32 16 8 4 2 1
~0 1 1 1 1 1 1 1 1
= -128+64+32+16+8+4+2+1 == -1
이는 오버플로를 이해하는 데도 도움이 됩니다.
-128 64 32 16 8 4 2 1
126 0 1 1 1 1 1 1 0 = 126
+1 0 1 1 1 1 1 1 1 = 127
+1 1 0 0 0 0 0 0 0 = -128 overflow!
~
을 사용하다
~0 = 1 which is -1 in 2's complement form
http://en.wikipedia.org/wiki/Two's_complement
와 2가 아닌 비트 ~
바로 (그들 아래)
11 1 11= 1 1 1 1 1 = 127
0 0 000= 0 0 0 0 0 0 0 = -12811111 0 = 1 1 1 1 1 0 = 126
000001= 0 0 0 0 0 0 1 = -disples11 1 11= 1 1 1 1 1 = -1
0 0000= 0 0 0 0 = 0111110= 1 1 1 1 1 0 = -2
0 00 0 01=1 0 0 0 0 0 1 = 1000001= 0 0 0 0 0 0 1 = -disples
11 1 1 1 0= 0 1 1 1 1 0 = 1260 0 000= 0 0 0 0 0 0 0 = -128
11 1 11= 1 1 1 1 1 = 127
★★★★★★★★★★★★★★★★★★~
바이너리 반전이 아니라 비트 반전입니다.:!
(자바) 자바타
에서는, 0은 0입니다.~
비트 단위로는 아닙니다.부호 있는 정수 타입의 경우, 모든 1은 (대부분) -1입니다.「 」 「 」 、 「 」
0xFF = -1 // 1111 1111
0xFE = -2 // 1111 1110
...
0xF0 = -128 // 1000 0000
0x7F = 127 // 0111 1111
0x7E = 126 // 0111 1110
...
0x01 = 1 // 0000 0001
0x00 = 0 // 0000 0000
2진수 반전이고, 두 번째 보수의 -1은 0의 2진수 반전입니다.
0은 조금도 아니다.이 값은 1바이트(최소 또는 그 이상) - 00000000입니다.bitwise를 사용하지 않으면 111111이 됩니다.부호 있는 정수로 -1입니다...
32비트 부호 있는 정수인 경우
~00000000000000000000000000000000=11111111111111111111111111111111
은 -11)입니다.
진짜 이유는 ~가 투즈 컴플리트이기 때문인 것 같아요.
Javascript는 대부분의 프로그래밍 언어에서 하나의 보완을 위한 약간의 토글을 나타내지만 두 개의 보완을 위해 문자 tilde, ~를 지정합니다.
언급URL : https://stackoverflow.com/questions/2513525/bitwise-not-operator
'programing' 카테고리의 다른 글
C89, C90 또는 C99의 모든 기능에 시제품이 필요합니까? (0) | 2022.06.17 |
---|---|
VueJ: 텍스트 영역의 기본 동작을 방지하는 방법 (0) | 2022.06.17 |
텍스트 센터를 Android에 맞추다 (0) | 2022.06.16 |
intersectionObserver/Scrollspy가 있는 요소의 특정 클래스를 표시하려면 어떻게 해야 합니까? (0) | 2022.06.16 |
C의 exit(0)과 exit(1)의 차이점은 무엇입니까? (0) | 2022.06.16 |