컴퓨터는 2진수를 이용하여 데이터를 저장하고 연산한다.


 1bit은 0인지 1인지 표기하는 일종의 '자리수'고, 1byte는 8bit을 말한다.
1byte에는 0~7까지 총 8개의 자리가 있으므로, 1000 0000 은 10진수로 2^7을 의미한다.
즉, 1byte는 0부터 2^8-1(=255) 까지 총 256개의 숫자를 표현할 수 있다.


컴퓨터는 정수를 표현할 때, 1byte에서 가장 앞 자리 수를 MSB로 남겨둔다.
MSB는 most significant bit의 이니셜로, 부호를 나타낸다.
0이면 양수, 1이면 음수.

음수를 만드는 방법은 간단하다.
해당 값에서 NOT 연산을 취한 후, 1을 더하면 된다.

원리는 inverse element(역원)을 더하는 것이다.
간단하다.

그냥 단순히 MSB를 바꾼다고 음수가 되지 않는다.
올바른 음수를 만드는 방법은 양수의 역원을 찾는 것이다.

그냥 심심해서 색 상자 써 봤다.
ㅋㅋ.


실수는 조금 복잡하다.
2byte를 사용하는데, 하나는 지수부, 하나는 유효숫자를 나타낸다.
즉 16개의 bit가 다음과 같다고 하자.

[] [] [] [] [] [] [] [] // [] [] [] [] [] [] [] []
앞에 진하게 표기된 부분이 MSB이다. s라고 하자.
그 뒤 7개는 지수부를 의미한다. e라고 하자.
마지막 1byte는 유효숫자를 나타낸다. sf라고 하자.
그러면 결과는 다음과 같다.



여기서 sf는 자리수를 생각하지 않고 그냥 넣은 숫자이다.

조금 복잡하다ㅋ


그리고!
위 표기법으로는 0을 만들 수 없다. 항상 양수거나, 음수이다.
r은 0을 지나지 않는다.
그렇기 때문에 오차가 존재한다.

오차에 대한 얘기는 다음으로 미룬다.

'★ 수학 이야기 > ▣ 플밍 이야기' 카테고리의 다른 글

2진수  (0) 2011.06.02
ASCII(American Standard Code for Information Interchange) tables  (0) 2011.06.02
[C/C++] Caesar cipher  (0) 2011.02.03
원주율 근사  (0) 2011.01.02
Posted by White Joker