악마반장 2023. 3. 2. 00:49

글과 사진은 연관이 없습니다..

이전 글에서 비트에 대해서 이해를 했으니 이제 비트 연산자를 공부해 볼 차례이다.

기본적으로 비트단위연산자는 비트를 비교해서 또 다른 숫자를 나타내는 것이다(기본목적).

 

NOT

먼저 순서대로, NOT 연산자부터 보자

NOT 연산자는 비트 반전이므로, 0이 1로 1이 0으로 반전되는 것을 의미한다.

 	int Left = 1;
	int Right = 3;
	int Result = 0;

	// 0b00000000000000000000000000000001;
	// 0b11111111111111111111111111111110;
	// Not 비트 반전.
    
	Left = ~Left; // -2

AND

두개의 비트는 비교해서 둘 다 1인 비트만 1인 결과를 리턴한다.

	// Left   0b00000000000000000000000000000001;
	// Right  0b00000000000000000000000000000011;
	// Result 0b00000000000000000000000000000001;
    
	Result = Left & Right;

OR

두개의 비트를 비교해서 둘 중 하나만 1 이어도 1이다.

	// Left   0b00000000000000000000000000000001;
	// Right  0b00000000000000000000000000000011;
	// Result 0b00000000000000000000000000000011;
    
	Result = Left | Right;

XOR

둘이 다를 때만 1의 결과가 나온다.

	// Left   0b00000000000000000000000000000000;
	// Right  0b00000000000000000000000000000001;
	// Result 0b0000000000000000000000000000000?;
    
	Result = Left ^ Right; // 1

비트 왼쪽&오른쪽 시프트

	// 1 => 0b00000000000000000000000000000001;
	을 왼쪽으로 1칸 옮겨라;
	// 0b00000000000000000000000000000010; // 0이 채워진다
   
	Left = 1 << 1;
    
	// 3 => 0b00000000000000000000000000000011;
	// 0b00000000000000000000000000000110; // 6

	Left = 3 << 1;

오른쪽은 정말 오른쪽으로 미는것.