본문 바로가기

이것저것 알게된 것

비트연산자

백준 14889,1194번을 풀면서 비트연산으로 다양한 알고리즘을 구현할 수 있다는것을 알게 되었다.

비트연산자에 대해 알아본다.


컴퓨터는 2진수를 기반으로 데이터를 저장하고, 연산한다.

2진수는 0과 1로 표현되는 수로, int number = 95를 저장했다면 컴퓨터에는 다음과 같이 저장된다.

 0

 1

 1

 1

 1

 1

 1

 512

256 

128 

64 

32 

16 

한 숫자는 데이터를 표현하는 단위로 비트라고 불리고, 비트가 8개 모이면 1byte가 된다.

*java에서 int는 4byte로 32bit를 가진다.


시프트연산자

n<<i 

대상 필드의 값(n)을 2진 비트로 바꾼  후, 좌측으로 i만큼 이동

오른쪽 남는 비트는 0으로 채움

n<<i 연산은 산술적으로 n * 2^i와 같다. 


n>>i

대상 필드의 값(n)을 2진 비트로 바꾼  후, 우측으로 i만큼 이동

비어있는 왼쪽 비트는 부호와 같은 값으로 채운다

산술적으로 n / 2^i와 같다.


비트연산

&(and) : 양쪽모두 1일때 결과 1

|(or) : 둘중 하나가 1일때 결과 1

^(exclusive): 서로 다를 때 결과 1

~(not): 0은 1로 1은 0으로

'이것저것 알게된 것' 카테고리의 다른 글

2차원배열 특정값으로 채우기  (0) 2019.08.02
char형 연산  (0) 2019.07.20
필드와 변수의 차이,선언위치,초기화  (0) 2019.07.16
Scanner와 BufferedReader  (0) 2019.06.19
향상된 for문  (0) 2019.06.07