isPowerfulBlog
[컴퓨터구조] #02 | Arithmetic for Computers 본문
임은진 교수님의 컴퓨터구조 lecture04~07을 학습하고 작성한 TIL입니다
2.4. Signed and Unsigned Numbers
signed 32-bit in 2's complement representation
✅ 1의 보수: 각 자릿수의 값이 모두 1인 수에서 주어진 2진수를 뺀 값, 비트 반전
✅ 2의 보수: 1의 보수에 1을 더한 값
-2 표현하기: +2의 2의 보수를 만든다.
a
+2를 2진수로 표현한다0000 0000 0000 0000 0000 0000 0000 0010
b
a의 1의 보수를 만든다1111 1111 1111 1111 1111 1111 1111 1101
c
b에 1을 더한다
```
1111 1111 1111 1111 1111 1111 1111 1101
- 1
= 1111 1111 1111 1111 1111 1111 1111 1110
= -2
### a=1111 1111 1111 1111 1111 1111 1111 1111₂을 십진수로 나타내기
**음수**
1. `b` a의 **1의 보수**를 만든다
b=0000 0000 0000 0000 0000 0000 0000 0000
2. `c` b에 1을 더한다 → c는 a의 절댓값
c=0000 0000 0000 0000 0000 0000 0000 0001
3. a는 십진수로 -c
**양수**
32-bit로 나타낼 수 있는 가장 큰 양수는
0111 1111 1111 1111 1111 1111 1111 1111
***
# 3. Arithmetic for Computers
## signed binary subtraction
### a-b = a + (-b)
b를 **양수/음수 관계없이** -b(2의 보수)로 만들어 덧셈을 함
## overflow
연산의 결과가 32-bit word로 표현될 수 없을 때 발생
**부호가 같은** 숫자끼리 더했는데 결과가 **부호가 다르게** 나오면 오버플로우가 발생한 것 → **overflow exception 발생**
## MIPS unsigned 명령어
### addu / addiu / subu
unsigned 숫자로 보고 연산을 하기 때문에
연산의 결과가 **overflow**가 되어도 **exception이 발생하지 않음**
## MIPS integer multiplication
### mult / multu
연산 값을 `LO`, `HI`에 나눠서 저장
mult rs, rt
multu rs, rt
## MIPS integer division
### div / divu
`LO` 몫
`HI` 나머지
div rs, rt
divu rs, rt
✅ **mfhi, mflo**를 통해서 `LO`와 `HI`에 저장된 값을 레지스터에 읽어올 수 있음
## MIPS logical operations
### or / ori
### and / andi
### nor
not(A) = not(A or 0) = A nor 0
not(A) = not(A or A) = A nor A
nor $t7, $t1, $t1 # $t7 = ~$t1
### sll
shift left logical
sll $t1, $s0, 4
**(a)** 왼쪽으로 i bits shift하는 것 = **(b)** 2^i만큼 곱하는 것
**연산속도: a > b**
### srl
shift right logical
msb가 이동함에 따라 왼쪽에 남는 비트들은 0으로 채워짐
srl $t4, $t2, 2
```
(a) 오른쪽으로 i bits shift하는 것 = (b) 2^i만큼 나누는 것
연산속도: a > b
참고
임은진 교수님 컴퓨터구조 강의안
2021년 벨로그 글 옮겨옴.
'CS' 카테고리의 다른 글
[컴퓨터구조] #06 | slt (0) | 2023.10.16 |
---|---|
[컴퓨터구조] #05 | branch (0) | 2023.10.16 |
[컴퓨터구조] #04 | data transfer (0) | 2023.10.16 |
[컴퓨터구조] #03 | MIPS R/I-format (0) | 2023.10.16 |
[컴퓨터구조] #01 | MIPS 산술 논리 연산 명령어 (1) | 2023.10.16 |