programing

비트 비연산자

prostudy 2022. 6. 16. 22:05
반응형

비트 비연산자

조작의 이유(~0); -1 이 되지 프린트 - 1 - 2 수 0 이 1 이 1 이 이 이 。왜??

너는 사실 꽤 친하다.

바이너리에서는 0이 아닌1이어야 합니다.

네, 한 조각에 대해서 얘기하면 이게 딱 맞습니다.

,,int0으로 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 = -128

11111 0 = 1 1 1 1 1 0 = 126
000001= 0 0 0 0 0 0 1 = -disples

11 1 11= 1 1 1 1 1 = -1
0 0000= 0 0 0 0 = 0

111110= 1 1 1 1 1 0 = -2
0 00 0 01=1 0 0 0 0 0 1 = 1

000001= 0 0 0 0 0 0 1 = -disples
11 1 1 1 0= 0 1 1 1 1 0 = 126

0 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

반응형