C & C++

    C의 음수 표현법과 2의 보수

    컴퓨터에서는 모든 수를 2진법으로 저장한다. 우리가 화면에 10이라고 십진수로 써도 실제로는 0000 1010이라고 저장된다는 것이다. 하지만 단순히 이런 방법으로만 하면 음수를 저장할 방법이 없다. 그래서 프로그래머들은 다음과 같은 방법을 고안했다. 바로 첫 번째 비트는 부호 (-, +)를 저장하고 그다음부터는 실질적인 값을 저장한다는 것이다. 맨 앞에 있는 비트 0은 '+', 1은 '-'를 의미한다고 보면 된다. 0000 0000 = +0 0000 0001 = +1 ... 0111 1111 = +127 1000 0000 = -0 1000 0001 = -1 ... 1111 1111 = -127 하지만 이렇면 문제점이 생긴다. 바로 0을 표현할 방법이 두 개라는 것인데, 그러면 사소하지만 메모리를 손해 ..