컴퓨터의 수의 체계는 더욱 복잡합니다. 2진법을 16진법 8진법 등등으로 바꾸는 방법을 익혀서 가독성을 높히는 것도 중요하지만 컴퓨터가 어떤 수를 사용하고 있는지 더 깊게 알아보는 것도 중요하겠죠?
그럼 이제 data를 다룰 때 2진법을 쓰는 컴퓨터의 수 체계에 대해서 공부해 보아용
Data의 기본 단위
Byte (B) = 8 bits ← 흔히 쓰이곤 합니다
Nibble (N) = 4 bits
자주 사용하지는 않지만 알아둡시다^^
컴퓨터는 기본 단위로 byte(B)를 사용합니다
그럼 KB, MB, GB 등등 우리가 흔히 볼 수 있는 단위에 대해 알아볼까요?
210 = 1024 =1KB (kilobyte)
220 = 1024 x 1024 =1MB (megabyte)
230 = 1024 x 1024 x 1024 =1GB (gigabyte)
240 =1TB (terabyte)
250 = 1PB (petabyte)
260 = 1EB (exabyte)
270 = 1ZB (zettabyte)
.
.
이렇게 계산하시면 됩니다^^
그렇다면 이 숫자들을 진법으로 어떻게 표현할 수 있는지 간단히 보고 넘어갑시다~
이렇게 무슨 진법을 사용하느냐에 따라 수가 다르게 표현될 수 있습니다
그리고 이제 컴퓨터가 사용하는 기본 시스템인 2진법에 대해서 알아볼까요?
숫자에는 두가지 종류가 있습니다.
unsigned number와 signed number 인데요
전자는 수의 부호가 없는 것이고 후자는 수의 부호가 있는 것입니다.
그렇다면 부호가 없는 (양수밖에 없는) unsigned number는 표기가 쉽겠지요?
그렇다면 더욱 복잡한 signed number에 대해 더 알아보도록 하겠습니다.
컴퓨터가 사용하는 Binary Values signed number은 다시 두 종류로 나뉩니다.
Binary number - Unsigned number
- Signed number - Sign/Magnitude Numbers
- Two's Complement Numbers
위에 설명했 던 것을 정리하면 이렇게 분류 됩니다.
이름만 봐서는 아직 잘 모르겠죠? 더 알아보도록 할게요~
Sign/Magnitude Numbers 란?
1 sign bit, N-1 magnitude bits로 이루어져 있습니다.
Sign bit is the most significant (left-most) bit
음수일 경우 : sign bit = 1
양수일 경우: sign bit = 0
예) 4-bit로 표현한 ± 5
+5 = 01012
- 5 = 11012
그렇다면 sign/magnitude system의 문제는 뭘까요?
다음 예를 봐주세요
5 + (-5)
0101
+1101
10010
답은 0이 나와야 하는데.... 컴퓨터가 계산한 결과는 4bit이니까 0010이 나오게 되겠죠?
이러면 오류가 발생합니다.
sign/magnitude system은 덧셈할 경우 문제가 발생하게됩니다. 그리고 이 시스템은 sign bit에 따라서 0을 2가지로 표현합니다.
0000 (+0) 예를 들어 4bit일때 수의 범위는 이렇게 되요
1000 (-0) 이렇게요 ㅠㅠ
말이안되죠 그래서 새로운 방법을 고안해 낸 것이
Two's complement number입니다!
Two's Complement Numbers 란?
먼저 위의 sign/magnitude와 같은 문제가 발생하지 않게 됩니다.
덧셈도 잘 되고~ 0을 표현하는 방법도 하나이지요^^
이제 Two's complement number를 표현하는 방법을 알아봅시다!
양수의 경우에는 평소에 우리가 사용하듯이 숫자를 표기하면됩니다.
그러나 음수의 경우에는 달라요~
1. 먼저 음수의 절대값(양수)의 2진법 수를 표현합니다.
2. 그리고 모든 숫자를 뒤집습니다. 1010 이라면 0101 이렇게요.
3. 마지막으로 그 수에 1을 더합니다
그러면 완성~
예를 보고 공부해 볼까요^^?
-7 을 공부해 봅시다 !!
0111 : +7 로 표기해요
1000 : 뒤집어요
+ 1 : 그리고 1을 더하면
1001 (-7) : 완성!!
음수의 경우에도 이 방법을 쓰면 원래의 양수값이 나옵니다^^
sign/magnitude에서는 -7을 1111로 표기합니다. sign bit이 1이고 나머지 3bit은 111로 7을 표기하니까요. sign/magnitude과 표기하는 방법이 다르지요?
마지막으로 숫자가 표현할 수 있는 범위를 알아볼까요?
bit에 따라서 표현할 수 있는 범위가 다른데요.
그 경계보다 수가 크면 overflow 작으면 underflow라고 해서 오류가 발생합니다.
몇 bit냐에 따라 그 경계가 달라지는데요
이렇게 알아두시면 되요^^
Unsigned number sign/magnitude number two's complement number
[0, 2N-1-1] [-(2N-1-1), 2N-1-1] [-2N-1, 2N-1-1]
이제 컴퓨터의 수가 어떻게 쓰이는 지에 대해 잘 아셨죠^^^^^^^^^^^^^^?
그럼 이만 안녀어엉
참고로 마지막 사진은 4 bit일 때 범위를 나타낸 거에요
답글삭제즉 N = 4 입니다
참고하세요^^
수고했어~
답글삭제