보근은 참고 있다
2.4 부호있는 수와 부호없는 수 본문
컴퓨터가 수를 나타내는 법
컴퓨터는 일련의 높고 낮은 전기 신호의 형태로 숫자를 저장한다. 따라서 이진수를 사용한다고 볼 수 있다. 컴퓨터 내에서 모든 정보는 이진 자리 수(binary digit), 즉 비트(bit)로 구성되므로 비트가 계산의 기본 단위가 된다.
워드 내의 각 비트에 오른쪽에서 왼쪽으로 0, 1, 2, 3, ... 과 같이 번호를 붙인다.
워드는 위 그림처럼 수평뿐만 아니라 수직으로도 그릴 수 있기 때문에, 가장 오른쪽 혹은 가장 왼쪽 비트라고 말하면 표현이 애매할 수가 있다. 대신 LSB(Least Significant Bit)라는 용어로 가장 오른쪽 비트 0을 나타내고, MSB(Most Significant Bit)라는 용어로 가장 왼쪽 비트 31을 나타낸다.
2의 보수
MIPS 워드의 길이는 32비트이므로 2³² - 1 까지의 숫자를 표시할 수 있다. 하지만, 컴퓨터도 음수를 나타낼 수 있어야 한다. 음수를 나타내면 표현할 수 있는 수의 범위는 작아진다. 여러 가지 방법이 있지만 대부분의 컴퓨터는 2의 보수로 부호있는 수를 표현한다. 1워드로 표현할 수 있는 수는 -2³¹ ~ 2³¹-1 까지가 된다. 양수가 1 더 적은 이유는 0을 양수로 표현하기 때문이다.
2의 보수 표현에서 모든 음수는 MSB가 1이다. 이런 장점을 이용해 MSB만 검사해 양수인지 음수인지 검사할 수 있다. 그러므로 MSB를 부호 비트(sign bit)라고도 부른다. 비트 값에 2의 멱수를 곱한 값으로 32비트의 양수와 음수를 모두 표현할 수 있다.
(x31 * -2^31) + (x30 * 2^30 + ... + (x1 * 2^1) + (x0 * 2^0)
부호 비트에만 -2^31을 곱하고, 나머지 비트들은 각각의 위치에 해당하는 양의 기수 값을 곱한다.
부호 확장
수의 부호 유무는 산술연산뿐만 아니라 적재 명령어와도 상관이 있다. 부호있는 적재의 경우 레지스터의 남는 곳을 채우기 위해 부호를 반복하여 복사한다. 이것을 부호 확장(sign extension)이라고 한다. 이것의 목적은 레지스터 내부에 정확한 값을 적재하기 위함이다. 부호없는 적재의 경우에는 단순히 데이터의 왼쪽을 0으로 채운다.
MIPS는 바이트 적재를 위해 두 개의 명령어를 제공한다. lb(load byte) 명령어는 바이트를 부호있는 수로 간주하고 남은 비트를 부호 확장하여 채운다. 반면에 lbu(load byte unsigned) 명령어는 부호없는 정수를 다룬다.
부호 확장은 빠른 역부호화를 가능하게 해준다. 0은 1로 1은 0으로 바꾸고 1을 더하면 끝이다.
ex) 0000 0000 0000 0000 0000 0000 0000 0010 // 2
1111 1111 1111 1111 1111 1111 1111 1101 // 0 -> 1 , 1 -> 0
+ 1
----------------------------------------------------
1111 1111 1111 1111 1111 1111 1111 1110 // -2
'CS > 컴퓨터 구조' 카테고리의 다른 글
2.6 논리연산 명령어 (1) | 2020.10.14 |
---|---|
2.5 명령어의 컴퓨터 내부 표현 (0) | 2020.10.14 |
2.3 피연산자 (0) | 2020.10.14 |
2.2 하드웨어 연산 (0) | 2020.10.14 |
2.1 서론 (0) | 2020.10.14 |