happy coding

[c] 음수의 표현 본문

self study/언어의 기본부터

[c] 음수의 표현

yeoonii 2022. 11. 30. 17:02
TCP school을 보고 정리한 내용입니다.

정수의 표현

정수를 표현하는 방법에는 크게 부호없는 정수와 부호있는 정수로 나누어 생각할 수 있다. 부호없는 정수를 표현할 때에는 단지 해당 정수 크기의 절댓값을 2진수로 변환해 표현하면 되지만, 부호있는 정수에서 음수를 표현하는 방법이 있다.

음수의 표현

컴퓨터에서 음수를 표현하는 방법에는 1. 부호 비트와 절댓값 방법 2. 1의 보수법 3. 2의 보수법 이 있다.

부호 비트와 절댓값 방법은 최상위 1비트로 부호를 표현하고, 나머지 비트로 해당 정수의 절댓값을 표현하는 방법이다. 이 방법을 사용하면 최상위의 1비트가 부호를 표현하기 위해 사용되어 표현할 수 있는 절댓값의 범위는 절반으로 줄어든다. 하지만 음수를 표현할 수 있으므로, 총 표현할 수 있는 크기는 거의 비슷해진다. 그리고 이 방법으로 음수를 표현하게 되면 +0과 -0이 따로 존재한다.

1의 보수법은 해당 양수의 모든 비트를 반전하여 음수를 표현하는 방법이다. 이 방법을 사용하면 음수를 비트 NOT 연산만으로 표현할 수 있어 연산이 매우 간단해진다. 하지만 1의 보수법은 부호 비트와 절댓값 방법과 같이 +0과 -0이 따로 존재하는 문제점을 가진다.

2의 보수법은 해당 양수의 모든 비트를 반전한 1의 보수에 1을 더하여 음수를 표현하는 방법이다. 이 방법은 앞서 살펴본 방법이 모두 두 개의 0을 문제점을 해결하기 위해 고안되었다. 이 방법을 사용하면 -0은 2의 보수를 구하는 과정에서 최상위 비트를 초과한 오버플로우가 발생하여 +0이 되므로, 2의 보수법에서는 단 하나의 0만 존재하게 된다.

 

 

'self study > 언어의 기본부터' 카테고리의 다른 글

[python] python에 대해  (0) 2022.12.24
[c] 실수의 표현  (1) 2022.11.30
[c] 비트 단위 연산  (0) 2022.11.30
[c] 바이트 저장 순서  (0) 2022.11.30
[c] 조건부 컴파일(conditional compile)  (0) 2022.11.28
Comments