2진수 표현 방식(부호화 절댓값, 1의 보수, 2의 보수)

CharmingL·2024년 4월 23일
0

개념

목록 보기
3/4
post-thumbnail

컴퓨터는 0과 1만으로 모든 수 연산을 해야하므로 최대한 효율적인 수 표현방식을 갖고자 한다.

2진수 정수를 표현하는 방법에는 다음과 같은 세가지 방법이 있다.

1) 부호화 절댓값
2) 1의 보수
3) 2의보수


1) 부호화 절댓값

최상단 비트(MSB)만으로 부호를 표현하는 방식.
양수는 MSB가 0, 음수는 1로 표현한다.

양수(+) 표현

십진수+0+1+2...+127
비트0000 00000000 00010000 0010...0111 1111

음수(-) 표현

십진수-0-1-2...-127
비트1000 00001000 00011000 0010...1111 1111

0이 +0과 -0으로 나누어 표현된다
최상단 비트를 부호로 사용하기 때문에 7개의 비트만으로 수를 표현해야한다.
즉 표현할 수 있는 수는 -127~+127


2) 1의 보수

의미상으로는 1111 1111로 채워진 비트에서 해당 비트를 빼는 것에 가깝지만,
쉽게 말해 모든 비트를 반전함으로써 음수를 표현하는 방식
부호화 절댓값은 음수 표현시에 MSB만 반전시켰다면,
1의 보수는 모든 비트를 반전시키는데에 차이가 있다.

양수(+) 표현

십진수+0+1+2...+127
비트0000 00000000 00010000 0010...0111 1111

음수(-) 표현
위의 양수의 비트를 모두 반전 시킨 값과 같다.

십진수-0-1-2...-127
비트1111 11111111 11101111 1101...1000 0000

0이 +0과 -0으로 나누어 표현된다.
즉 표현할 수 있는 수는 -127~+127


3) 2의 보수

2의 보수체계에서 음수를 표현할 때 1의 보수에 1을 더하는 방식

1의 보수 == 모든 비트 반전,
2의 보수 == 모든 비트 반전 + 1

양수(+) 표현

십진수+0+1+2...+127
비트0000 00000000 00010000 0010...0111 1111

음수(-) 표현
위의 양수의 비트를 모두 반전 시킨 값과 같다.

십진수-0-1-2...-127-128
비트0000 00001111 11111111 1110...1000 00011000 0000

0이 0000 0000 (2) 하나로 표현된다.

앞서 언급한 부호화 절댓값, 1의 보수에서 00000 0000 (2) 
1111 1111 (2)
이 두가지로 표현되던 방식과 달리, 
2의 보수에서는 1의 보수의 0 표현방식인 1111 11111을 더한 
1 0000 0000(2)-0으로 사용하게 된다.
하지만 8비트만으로 수를 표현해야하는 상황이므로 넘어간 1은 버려버리고, 
0000 0000(2) 하나만으로 0을 표현할 수 있게 되는 것이다.

즉 표현할 수 있는 수는 -127~+128
지금까지 나온 방식 중에 가장 넓은 범위의 수를 표현할 수 있다.
따라서 컴퓨터는 음수를 표현할 때 이와 같은 2의 보수 개념을 사용하고 있다.

profile
내 빈틈을, 조금씩 천천히!! ٩(•᎑•)✦

0개의 댓글