일단 MSB(Most Significant Bit)를
부호로 해석하느냐 가장 높은 양의 자리수로
해석하느냐를 signed, unsigned로 결정하게 됩니다.
1바이트(8비트) 기준으로 signed는 -(2^7) ~ (2^7)-1까지 표현 가능하고
unsigned는 0 ~ (2^8)-1까지 표현 가능합니다.
signed, 즉 MSB를 부호로 볼 때
음수를 표기할 때 2의 보수법을 주로 사용하는데
1의 보수법이나 다른 표기법보다 컴퓨터에 적용시키기 쉽기 때문에
많이 사용되는 것으로 알고 있습니다.
손으로 계산하실 때
-5는 +5를 2진법으로 표시하시고 2의 보수를 취하면 됩니다.
0000 0101 (+5)
1111 1010 (1의 보수)
1111 1011 (2의 보수 = 1의 보수 + 1)
이것이 -5의 표기입니다.
1111 1111이 -1이므로 4개 감소하면 -5. 맞죠?
또는 +5와 -5를 더해서 0이 나오는지 보는 것입니다.
0000 0101 (+5)
1111 1011 (-5)
--------------)+
0000 0000 (0). carry(자리 올림수) 발생
이제 거꾸로
비트를 signed로 읽어서 2의 보수로 표현된
그 비트값이 음수로 몇인지 계산해 보도록 하죠.
방법은 이렇습니다.
1111 0000를 예로 들겠습니다.
1) MSB를 보니 1이다. 그렇다면 이것은 음수! 일단 MSB를 잘라낸다.
2) 나머지 7자리(111 0000)의 2의 보수를 구한다.
000 1111 (1의 보수)
001 0000 (2의 보수)
3) 2진수를 10진수로 읽으니 16. 여기에 잘라둔 -부호를 붙인다.
따라서 -16이네요.
확인은 16을 2진수로 풀어 써서
1111 0000과 더해 보시면 0이 나오는 것을 알 수 있을 것입니다.
(carry는 무시함)
---------------------------
Go to the U-City
----------------------------------------------------------------------------------------
Don't Feed the Trolls!
----------------------------------------------------------------------------------------
음...
일단 MSB(Most Significant Bit)를
부호로 해석하느냐 가장 높은 양의 자리수로
해석하느냐를 signed, unsigned로 결정하게 됩니다.
1바이트(8비트) 기준으로 signed는 -(2^7) ~ (2^7)-1까지 표현 가능하고
unsigned는 0 ~ (2^8)-1까지 표현 가능합니다.
signed, 즉 MSB를 부호로 볼 때
음수를 표기할 때 2의 보수법을 주로 사용하는데
1의 보수법이나 다른 표기법보다 컴퓨터에 적용시키기 쉽기 때문에
많이 사용되는 것으로 알고 있습니다.
손으로 계산하실 때
-5는 +5를 2진법으로 표시하시고 2의 보수를 취하면 됩니다.
0000 0101 (+5)
1111 1010 (1의 보수)
1111 1011 (2의 보수 = 1의 보수 + 1)
이것이 -5의 표기입니다.
1111 1111이 -1이므로 4개 감소하면 -5. 맞죠?
또는 +5와 -5를 더해서 0이 나오는지 보는 것입니다.
0000 0101 (+5)
1111 1011 (-5)
--------------)+
0000 0000 (0). carry(자리 올림수) 발생
이제 거꾸로
비트를 signed로 읽어서 2의 보수로 표현된
그 비트값이 음수로 몇인지 계산해 보도록 하죠.
방법은 이렇습니다.
1111 0000를 예로 들겠습니다.
1) MSB를 보니 1이다. 그렇다면 이것은 음수! 일단 MSB를 잘라낸다.
2) 나머지 7자리(111 0000)의 2의 보수를 구한다.
000 1111 (1의 보수)
001 0000 (2의 보수)
3) 2진수를 10진수로 읽으니 16. 여기에 잘라둔 -부호를 붙인다.
따라서 -16이네요.
확인은 16을 2진수로 풀어 써서
1111 0000과 더해 보시면 0이 나오는 것을 알 수 있을 것입니다.
(carry는 무시함)
---------------------------
Go to the U-City
----------------------------------------------------------------------------------------
Don't Feed the Trolls!
----------------------------------------------------------------------------------------
정수는 일단 특별한
정수는 일단 특별한 경우가 아니면 다 2의 보수를 쓰고요.
원 수와 2의 보수의 합은 항상 2^n 형태입니다. (n은 표현하는 2진수 자릿수입니다. 가장 긴 수보다는 더 길어야겠죠.)
예를 들어 2진수 4자리에서 숫자 5(0101)의 보수는 1011이 되는데 이 두 수를 더하면 10000이 됩니다.
11110000은 -16입니다. 11110000과 10000(10진수 16)이 합쳐져야 100000000이 되거든요 (2^9)
Written By the Black Knight of Destruction
Written By the Black Knight of Destruction
댓글 달기