전 포스팅에서는 1의보수와 2의 보수에 대해서 알아봤다. 도대체 컴퓨터에서 어떻게 쓰이길래 알아본걸까? 궁금하지 않습니까?? 전 궁금했습니다.
컴퓨터는 데이터를 워드(2번째 포스팅에 나옴) 단위로 처리하는데 워드의 맨 왼쪽에 위치하는 MSB(최상위비트)는 양수일 경우 0, 음수일 경우 1로 부호를 나타낸다.
컴퓨터에서는 데이터를 부호화-절댓값, 부호화-1의 보수, 부호화-2의 보수 로 표현한다.
이 3개의 표현법 모두 양수의 비트데이터값은 같지만 음수의 비트데이터 값은 최상위비트 빼고는 다르다.
즉, 보수를 쓰는
음수표현을 위해서 보수를 쓴다.
자 그러면 문제를 풀어봐야겠다.
1워드가 8비트일 때, 10진수 +53과 -53을 부호화-절댓값, 부호화-1의보수, 부호화-2의보수로 각각 표현하라.
전혀 어렵지 않다. 우선 부호화-절댓값을 구해준 후 최상위비트만 빼고 각각 1의보수,2의보수로 표현하면 된다. 풀이를 같이 보도록 하자.
보수의 10진수 변환
보수를 10진수로 변환 할 수 있다면, 보수는 마스터한거다 라고 할 수 있….을걸요…? 한번 방법을 알아보게따..
1워드가 n비트일 때, 부호화-1의 보수를 10진수로 변환
2가지 방법이 있다.
1) -(2^(n-1)-1)+데이터 비트의 10진수 표현)
2) 주어진 1의 보수를 다시 1의 보수로 변환한 후, 이를 10진수로 변환
1워드가 n비트일 때, 부호화-2의 보수를 10진수로 변환도 마찬가지다.
1) -(2^(n-1))+(데이터 비트의 10진수 표현)
2) 주어진 2의 보수를 다시 2의 보수로 변환한 후, 이를 10진수로 변환
각각 첫번째 방법보다는 두번째 방법이 더 쉬우니 그걸로 풀겠다. 하지만 첫번째 방법에서 1의보수는 -1을 해주고 2의 보수는 -1을 안해준다는 사실만 알고 넘어가자.
두번째 방법을 사용해서 부호화-1의보수,2의보수를 10진수로 변환해보겠다.
이제 2의보수 차례다
참 쉽죠…?! 이것들만 알면 이제 부호화-1의보수, 부호화-2의보수로 연산은 뚝딱뚝딱 할 수 있다
하지만 여기서 알아둬야 할 것이 있다. 바로 부호화-1의보수로 연산할 때 초과가 발생하면 초과된 비트를 최하위비트(LSB)에 더해주지만,
부호화-2의보수로 연산할 때 초과가 발생하면 초과된 비트를 무시해준다는 것이다. 문제로 알아보겠다.
이렇게 부호화-1의보수로 연산할 때는 초과비트를 최하위비트에 더해주지만
부호화-2의보수로 연산할 때는 초과가 발생하면 무시해준다.
이것만 알면 연산도 정말 마스터..!!!
이제 1의보수,2의보수는 끝났고 다음 포스팅부터는 논리에 대해서 알아 볼 것이다.
'학과 공부 > 이산수학' 카테고리의 다른 글
논리적 동치[이산수학] (2) | 2023.10.09 |
---|---|
명제, 논리연산자, 역,이,대우 [이산수학] (1) | 2023.10.07 |
1의보수, 2의보수[이산수학] (1) | 2023.10.07 |
수의 표현,bit,byte,word[이산수학] (1) | 2023.10.07 |
1. 수의 체계,수의 연산[이산수학] (0) | 2023.10.07 |