티스토리 뷰
컴퓨터는 모든 숫자를 2진수로 표현합니다.
예를들어 숫자 5 같은 경우 00000101 로 표현해 저장합니다.
그러면 만일 음수인 경우 숫자를 어떻게 저장할까 의문이 생깁니다.
이를 위해 컴퓨터는 2의 보수라는 방법을 사용합니다.
2의 보수에 앞서 1의 보수라는 방법에 대해 설명하겠습니다.
1의 보수는 간단하게 1을 모두 0으로 0을 모두 1로 바꾸는 것 입니다.
00011101 이라는 숫자가 있을 때 1의 보수로 나타내면
11100010 이 됩니다.
이제 2의 보수라는 방법을 예를 들어서 설명해 보겠습니다.
-6이라는 숫자를 2진수로 표현하고 싶으면 우선 6을 이진수로 나타냅니다.
6 -> 00000110
그 후 1의 보수로 표현합니다.
00000110 -> 11111001
마지막으로 이 숫자에 1을 더합니다.
11111001 + 00000001 = 11111010 이 됩니다.
2의 보수라는 방법의 장점은 덧셈을 할 때 편리하다는 점입니다.
6과 -6을 더하면,
6 -> 00000110
-6 -> 11111010
00000110
11111010
------------
00000000
0 이라는 값이 나옵니다. (8자리가 넘어가는 숫자는 무시합니다.)
이는 6 + (-6) 의 결과와 같은 것을 알 수 있습니다.
또한 만약 제일 앞의 숫자가 1인지 0인지로만 음수 양수를 판별한다고 하면
ex) 10000001 -> -1, 00000001 -> +1
+0, -0 의 두개의 0이 생겨 한개의 저장공간을 낭비하게 됩니다.
따라서 2의 보수가 컴퓨터가 사용하기에 가장 알맞은 방법인 것을 알 수 있습니다.
'컴퓨터' 카테고리의 다른 글
Unicode - UCS-2, UTF-16, UTF-8, UTF-32 (1) | 2016.11.10 |
---|---|
ASCII 와 ANSI encoding (0) | 2016.11.09 |
왜 숫자는 0부터 세어야 하는가? (1) | 2016.11.08 |
[컴퓨터개론] 정수의 덧셈과 뺄셈 (0) | 2016.11.04 |
- Total
- Today
- Yesterday
- 우분투
- libgcrypt
- 다운로드
- 왜 0부터
- ubuntu
- utf-32
- 객체란
- 언리얼 엔진4
- 컴퓨터 숫자
- 인코딩
- 설치
- locales
- docker
- 안드로이드
- wine1.8
- MySQL
- Android
- download
- install
- void* arg
- 한글
- Uniity5
- libgcrypt11
- unreal4
- mariasql
- UTF8
- object orient
- winetricks
- 2의 보수
- 여러 인자
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |