보수를 활용하여 -값을 표현한다.
보수(Complement): 보완해서 완전하게 만들어 주는 수(보완제, 보어 등)
이산수학에서 등장한다.
*10진수 6: 6에 대한 10의 보수는 4 -> 1 0
*10진수 46: 46에 대한 10의 보수는 54 ->1 0 0
*2진수 1: 1에 대한 2의 보수는 1 -> 1 0
보수의 성질: 어떤 수의 보수는 그 수의 음수 표현으로 나타낼 수 있다.
*1234-234=1000 -> 1234+(-234)=1000
->(보수화) 1234+0324의 10의 보수
각 자리를 0으로 만드는 수(네자리 수 연산임을 유의한다)
각 자리를 9로 만드는 수(9의 보수 +1)
즉, 0324+9765+1=10000
9765+1=9766
결국 9766은 234의 음수 값이 된다.
9763은 0234의 10의 보수
그러므로 1000이 남는다.
즉, 어떤 수의 보수를 취하면 그 수는 -성질을 띈다.
2진수로 연산
23-6=17
(보수화)
각 자리를 모두 0으로 만든다(2의 보수)=>각 자리를 모두 1로 만든 후, +1을 해준다(1의 보수).
제일 앞 자리가 1이면 음수이다.
결국, 23+(-6)은 다음과 같다.
총 값은 17이 된다.
실제 컴퓨터에는 뺄셈 연산 기능이 없다.
컴퓨터는 2의 보수법을 활용해 음수를 저장한다. 즉, 보수를 취해 더해버린다.
연습문제
[출처: 선복근 교수님의 C Programming 강의]
'Computer engineering > C' 카테고리의 다른 글
If-else 조건문 (0) | 2021.04.21 |
---|---|
If 조건문 (0) | 2021.04.11 |
4. 대입 및 산술 연산자 (0) | 2021.04.01 |
3. #define이란? (0) | 2021.04.01 |
2. 수의 체계 -실수 (0) | 2021.03.25 |