개발/Java

[Java] 비트 연산자와 시프트 연산자

hojak99 2015. 11. 3. 15:24

비트 연산자와 시프트 연산자

 

§ 비트 연산자란?

컴퓨터 내부의 데이터를 비트(bit) 단위로 비교하거나 조작할 때 사용한다.

 ~

 1의 보수(부정)

 ^

 XOR(배타적 논리합비트 연산자

 |

 OR(논리합비트 연산자

 &

 AND(논리곱비트 연산자

 <<

 왼쪽 시프트 연산자

 >>

오른쪽 시프트 연산자 


§ 비트 연산자 (부정논리곱논리합배타적 논리합예시

A = 0001 1001 1011 1111

B = 0110 1011 1110 0000

 

~A = 1110 0110 0100 0000

~B = 1001 0100 0001 1111

 

A^B = 0111 0010 0101 1111

A|B = 1111 0110 0101 1111

A&B = 1000 0100 0000 0000

 

§ 시프트 연산

비트 연산자의 한 종류로서 비트를 좌우로 이동하는 연산이다.

 

§ 시프트 연산 예시

A<<2 = 0110 0110 1111 1100

B>>2 = 0001 1010 1111 1000

 

§ 비트(시프트를 포함한연산의 사용 예

&= [~] (클리어)

선택된 비트를 0으로 연산해 0으로 초기화시킨다.

|= (마스킹)

선택된 비트를 1로 연산해 1로 바꾼다.

 

시프트 연산은 두 가지 용도로 쓰인다.

1. 로케이터

비트의 위치를 선정한다. - 비트의 특정 부분만 1로 바꾸거나상위 비트만 할당 할 때

2. 곱하기 나누기

<<에 n만큼 비트를 이동하면 2^n로 곱하기 효과가 일어나지만,

>>에 n만큼 비트를 이동하면 2씩 나누어진다.

반응형