
비트는 컴퓨터가 처리하는 정보의 최소 단위인데, 한 개만으로는 많은 양의 데이터를 나타내기에 턱없이 부족하므로 정보를 표현하는 기본 단위로는 8개의 비트를 묶은 바이트(Byte)를 사용한다.
1 byte는 00000000 부터 11111111 까지 값을 표현할 수 있다.
1 byte는 정수로 표현하면 0부터 254까지 표현 가능하다.
1 byte를 16진수로 표현하면 00 부터 FF 까지 표현 가능하다. 4비트는 0부터 15까지 표현 가능하므로.
비트 연산자는 논리 연산자와 비슷하지만, 비트(bit) 단위로 논리 연산을 할 때 사용하는 연산자다.
비트 연산자
&, |, ^, ~, <<, >>, >>>
&는 and, |는 or, ^는 xor, ~는 not
<<는 좌측 시프트(shift), >>는 우측 시프트(shift), >>>는 우측 양수화 시프트
&, |, ^는 논리 연산자로도 사용된다.

비트 연산자는 바이트를 구성하고 있는 bit를 연산하는 연산자이다.
예시) &
00000000
& 11111111
-------------
00000000
public class BitOperatorExam1 {
public static void main(String[] args) {
int a = 4;
int b = a >> 1; // 2^1으로 나눈다.
System.out.println(b);
int c = 4;
int d = c << 1; // 2^1을 곱한다.
System.out.println(d);
}
}
2
8
왜?
4를 >>1 하면
00000000 00000000 00000000 00000100 ( int 타입 4를 bit로 표현 )
>> 1 ( 1만큼 하나 씩 오른쪽으로 비트가 밀리고, 왼쪽은 0으로 채운다.)
-----------------------------------------
00000000 00000000 00000000 00000010 이므로 2가 나온다.
4를 <<1 하면
00000000 00000000 00000000 00000100 ( int 타입 4를 bit로 표현 )
>> 1 ( 1만큼 하나 씩 왼쪽으로 비트가 밀리고, 오른쪽은 0으로 채운다.)
-----------------------------------------
00000000 00000000 00000000 00001000 이므로 8이 나온다.
지정한 수만큼 비트를 전부 오른쪽으로 이동시키며, 가장 왼쪽은 무조건 0으로 채운다.
>>>는 그 결과 무조건 양수가 나온다.
10000000 >>> 2 는 00100000가 된다.
10000000은 음수, 00100000은 양수이다.