1. 2의 보수란?
어떤 수를 커다란 2의 제곱 수에서 빼서 얻은 이진수를 뜻한다.
2의 보수는 산술연산에서 음수처럼 취급되며 주어진 이진수의 모든 자리를 bit inverse시킨 뒤 1을 더하면 2의 보수를 얻을 수 있다.
ex) 8bits(1byte) 이진수 0100_1011(75)의 2의 보수 구하는 법
1 0000 0000 -> 256
- 0100 1011 -> 75
----------------
1011 0101 -> -75
2. 2의 보수를 구하는 간단한 방법
비트 반전이라 할 수 있는 1의 보수를 이용한 뒤 1을 더한다
0100 1011 -> 75
1011 0100 bit inverse
1011 0101 -> -75 (+1을 함으로써 -75를 만들었다)
3. 음의 값을 보고 2의 보수 규칙을 사용하지 않고 값을 알아내는 방법
1011 0101을 보고 -75를 바로 알아내기는 쉽지 않다.
제한된 bit 수 내에서 음수를 표현하기 위해서는 상위 1bit가 부호를 1일 때 음수를 나타내는 규칙에 대해 생각해보자
상위 1bit를 제외하면 7개의 비트를 통해 2^7즉 128의 값을 표현할 수 있으며
1000 0000을 -128로 설정할 것인지 1111 1111을 -128로 설정할 것인지에 대한 고민이 생긴다.
두 번째의 경우 -128 + 53 = 75의 수식을 나타내기 어려움을 보인다.
간단히 상위 1bit를 제외하면 0011 0101이 53임을 알 수 있으며
1000 0000 -> -128
0011 0101 -> 53
----------------
1011 0101 -> -75
의 연산으로 이해할 수 있다.
즉, 1000 0000이 제한된 bit 수로 음수를 표현하기 위해 1000 0000이 8개의 bit로 표현할 수 있는 가장 작은 값인 -128임을 안다면 1011 0101을 보고 상위 bit인 1을 제외하여 0011 0101이 53임을 확인하여 -128과 53을 더한 -75임을 알게 되어 2의 보수를 사용하지 않고 음수로 표현된 이진법에 대해 값을 확인해볼 수 있게 된다.
@ 하지만 2의 보수 규칙을 활용하는 것이 가장 빠르다. 음수로 표현된 이진수에 대한 형태가 궁금했기 때문에 이런 생각을 하게 되었지만 사실 시험에나 실생활에서는 2의 보수 규칙을 빠르게 사용하는 것이 더욱 효율적이다.
하지만 제한된 bit 수 내에서 음수를 표현하기 위해서는 왜 1000 0000이 가장 작은 값을 가지는지에 대해서는 알아볼 수 있었다.
'파이썬' 카테고리의 다른 글
2장 파이썬 프로그래밍의 기초, 자료형(리스트)-(2) (0) | 2024.08.01 |
---|---|
묵시적 형변환과 명시적 형변환 (0) | 2024.07.29 |
1.1 + 0.1 == 1.2가 "False"인 이유를 아는지~? (0) | 2024.07.28 |
2장 파이썬 프로그래밍의 기초, 자료형(정수형, 문자열)-(1) (0) | 2024.07.27 |
1장 파이썬(python)이란? +) 설치 방법 (0) | 2024.07.23 |