알고리즘

2.1 [자료구조 알고리즘] 비트연산 완전정복

코딩클로스 2020. 7. 8. 16:41

어떤 데이터든 컴퓨터에 저장 될 떄는 전부 다 0과 1로 저장됩니다.

 

예시로 Integer를 들어 보겠습니다.

 

자바는 Integer는 4bytes입니다 즉 1bytes당 8bit이니 32비트입니다.

즉 32개의 공간에 표현할 수있는 가지수는  2의 32승이다.

 

근데 숫자는 0부터 시작하기 때문에 표현할 수 있는 최대 숫자의 크기는 2의32승에서 -1 해야 한다.

 

비트공간은 2의 0승 부터 시작하기 때문에 2의 32승에 해당하는 숫자를 표현하려면 32번째 칸만 1이고 나머지가 0이다.

 

그때 비로소 2의 32승에 해당하는 숫자가 되는것이다. 하지만 현재 우리는 0부터 31까지 공간이 있다.

 

우리가 표현할 수 있는 최대 값은 밑의 그림처럼 모든 자리에 1로 채웠을때 가장 큰 값이다.

 

이러면 위에서 말한거 처럼 32번째 칸을 1로세팅하고  나머지를 다 0으로 세팅했을 때 거기서 1을 빼면 바로 밑의 그림

 

이다. 그래서 32개의 비트 공간으로 표현 할 수 있는 숫자의 최대 값은 2의32승 -1이다.

하지만 정수에는 양의 정수와 음의 정수가 있다 . 그래서 앞에 한칸은 플러스와 마이너스를 나타낸다. 

 

그럼 사용할 수 있는 비트 공간이 하나 줄었으니깐 2의 31승 -1이다

 

양의 정수는 2의 31승 -1이고

 

음의 정수는 2의 31승이다 

 

양의정수에서 0을 표현할때는 모든 비트가 0이였다. 그런데 음의 정수에서는 모든 비트를 0으로 세팅하면 가장 작은수

 정수는 음 0 양 3가지로 되어있음.

 

음의 정수에서는 부호를 뺀 숫자의 값이 커질수록 작은 값이다.

'알고리즘' 카테고리의 다른 글

구름 문제 근묵자흑  (0) 2020.11.18
백준 11057 오르막 수  (0) 2020.11.17
2.2 [자료구조 알고리즘] 비트연산 완전정복  (0) 2020.07.12
정렬 팁  (0) 2020.07.11
#1.0 선택정렬 (JAVA)  (0) 2020.07.07