프로그래밍 언어/Java

[Java] 비트와 바이트 / 2의 보수법

happy_life 2022. 6. 19. 13:17

목차

1. 비트와 바이트

2. 진법

 

 

1. 비트와 바이트

한 자리의 2진수를 '비트'라고 하며, 1 비트는 컴퓨터가 값을 저장할 수 있는 최소 단위이다. 하지만 이는 너무 작은 단위이고 보통 8비트인 1바이트를 데이터의 기본 단위로 사용한다.

 

*참고

워드: CPU가 한번에 처리할 수 있는 데이터의 크기 64비트 CPU에서는 64비트 = 8 바이트가 1워드이다.

 

 

2. 진법

2.1 진법 변환

10진수를 다른 진수로 변환하려면, 해당 진수로나누고 나머지 값을 옆에 적는 것을 더 이상 나눌 수 없을 때까지 반복한 다음 마지막 몫과 나머지를 아래부터 위로 순서대로 적으면 된다. 그냥 그림으로 보는 게 이해가 빠르다.

88 = 1011000(2)

 

n진수를 10진수로 변환하는 경우는 각 자리의 수에 해당 단위의 값을 곱해 모두 더해주면 된다.

123(2) = 1 x 2^2 + 2 x 2^1 + 3 x 2^0

 

2.2 실수 진법 변환

기존의 진법 변환과 반대로 원하는 진수로 계속 곱하면 된다.

 

ex) 0.625 

 

0.625 x 2 = 1.25

0.25 x 2 = 0.5

0.5 x 2 = 1.0

 

0.625(10) -> 0.101(2)

 

 

2.3 음수의 2진 표현 - 2의 보수법

어떤 수의 n의 보수: 더했을 때 n이 되는 수

ex) 7의 '10의 보수'는 3

이 때 3과 7은 10의 보수 관계에 있다고 한다.

 

2의 보수 관계는 어떤 두 수를 더해 2가 되는 관계를 뜻한다.

예를 들어 1 + 1 = 2이다. 이를 이진수로 나타내보자.

01(2) + 01(2) = 10(2) 이다.

여기서 주목할 점은 "자리올림이 발생하고 기존 자리가 0이 되었다는 점"이다. 이를 활용하여 음수를 표현하는데 아래의 표를 보며 이해해 보자.

5는 0101(2)이고, -5는 1011(2)이다. 이 둘을 더하면 10000(2)이 된다. 양수 5인 0101(2)와 2의 보수 관계에 있는 수는 1011(2)이다. 이 수를 -5로 하기로 한다.

이렇게  "자리올림이 발생하고 기존 자리가 0이 되는 점" 이 되게 하는 수로 음수를 표현하게 된다.

 

 

2의 보수법으로 음수를 구하는 방법

1. 구하고자하는 음수의 절댓값을 2진수로 표현한다.

2. 0과 1을 바꾼다.

3. 거기에 + 1을 한다

 

ex) -5를 구하기

1. -5를 5로 바꾼 뒤 2진수로 표현한다. 0101(2)

2. 0과 1을 바꾼다. 1010(2)

3. 거기에 +1 을한다. 1011(2)