BÀI TẬP KIẾN TRÚC MÁY TÍNH
1. Số nhị phân 8 bit (11010101) tương ứng với số nguyên thập
phân có dấu là bao nhiêu trong các phép biểu diễn số có dấu
sau đây:
• Dấu và trị tuyệt đối.
• Số bù 1.
• Số bù 2.
• Số thừa K=128
Giải:
+ Dấu và trị tuyệt đối:
d
7
d
6
d
5
d
4
d
3
d
2
d
1
d
0
1 1 0 1 0 1 0 1
Bit dấu d
7
=1 thể hiện dấu trừ.
Các bit d
0
d
1
d
2
d
3
d
4
d
5
d
6
cho giá trị tuyệt đối tương ứng với số nguyên thập phân là:
(-1)
1
*(1*2
0
+0*2
1
+1*2
2
+0*2
3
+1*2
4
+0*2
5
+1*2
6
)= - 85
10
Kết quả: -85
10
+ số bù 1:
Số 11010101
2
lấy số bù 1 ta được: (00101010)
2
= +42
10
Kết quả: +42
10
+ Số bù 2:
Ta có số: 11010101
2
Lấy số bù 1: 00101010
2
Sau đó cộng thêm 1: + 00000001
2
Ta được: 00101011
2
= +43
10
Kết quả: +43
10
+ Số thừa K = 128:
85
10
=128+85
10
01010101
2
= 10000000 + 01010101
2
= 11010101
2
Lấy bù 1 của 11010100
2
ta được: 00101010
2
Cộng thêm 1: +00000001
2
Ta được: 00101011
2
= + 43
10
Kết quả: +43
10
Họ và tên: Nguyễn Thị Hồng Diễm
MSSV: 1080263
Lớp: Sư Phạm Lý - Tin K34
2. Cho số nguyên -65, biểu diễn số nguyên dưới dạng nhị phân 8
bit trong các phép biểu diễn sau:
• Dấu và trị tuyệt đối.
• Số bù 1.
• Số bù 2.
• Số thừa K=128
Giải:
+ Dấu và trị tuyệt đối:
65/2 = 32 dư 1
32/2 = 16 dư 0
16/2 = 8 dư 0
8/2 = 4 dư 0
4/2 = 2 dư 0
2/2 = 1 dư 0
1/2 = 0 dư 1
Do số âm nên bit dấu có giá trị 1. Do đó: - 65
10
=11000001
2
Kết quả: - 65
10
= 11000001
2
+ Số bù 1:
Ta có : +65
10
=01000001
2
Lấy bù 1 : -65
10
=10111110
2
Kết quả: 10111110
2
+ Số bù 2:
Ta có số âm: +65
10
=01000001
2
Lấy bù 1: =10111110
2
Sau đó cộng thêm 1: +00000001
2
Ta được số dương: -65
10
= 10111111
2
Kết quả: 10111111
2
+ Số thừa K:
65
10
=128
10
+65
10
=10000000
2
+01000001
2
=11000001
2
Lấy bù 1 : 00111110
2
Cộng 1 : 00000001
2
00111111
2
Kết quả là : -65 =00111111
2
3. Đổi các số sau đây:
• 010010 > số thập phân.
• 1050 > Số nhị phân.
• 20.875 > số nhị phân.
• -2010 > số nhị phân 16 bits.
Giải:
010010
2
→ số thập phân:
010010
2
= 0*2
0
+1*2
1
+0*2
2
+0*2
3
+1*2
4
+0*2
5
= 18
10
Kết quả: 18
10
1050 (sang số nhị phân)
1050/2 = 525 dư 0 16/2 = 8 dư 0
525/2 = 262 dư 1 8/2 = 4 dư 0
262/2 = 131 dư 0 4/2 = 2 dư 0
131/2 = 65 dư 1 2/2 = 1 dư 0
65/2 = 32 dư 1 1/2 = 0 dư 1
32/2 = 16 dư 0
Kết quả: 1050
10
= 10000011010
2
20.875 (sang số nhị phân)
Phần nguyên 20
10
: Ta sẽ đổi phần nguyên dùng phương thức số dư:
20/2 = 0 dư 0
10/2 = 5 dư 0
5/2 = 2 dư 1
2/2 = 1 dư 0
1/2 = 0 dư 1
⇒ 20
10
= 10100
2
Phần lẻ .875: Dùng phương thức nhân biến đổi phần lẻ của số thập phân sang số
nhị phân:
.875*2 = 1.75 1
.75*2 = 1.5 1 111
2
.5*2 = 1 1
⇒10100.111
2
Kết quả: 10100.111
2
-2010 (sang số nhị phân 16 bit)
Thực hiện tương tự ta được: 2010
10
= 0000 0011 1111 1010
2
⇒ -2010
10
= 1000 0011 1111 1010
2
Kết quả: 1000 0011 1111 1010
2
4. Biểu diễn các số thực dưới đây bằng số có dấu chấm động
chính xác đơn 32 bit.
• 135.75
• -581.675
• 1150.6875
• -11257.125
Giải:
135.75
• Bước 1: Đổi số 135.75
10
sang số nhị phân: 135.75
10
= 10000111.11
2
• Bước 2: Chuẩn hóa : = 10000111.11
2
= 1.000011111
2
×2
7
= (-1)
S
× (1.f
1
f
2
…f
23
)×2
(E-127)
= 0 (1bit)
S = 0
10
• Bước 3: Điền các bit vào các trường theo chuẩn:
Số dương : Bit dấu S có giá trị 0
Phần mũ E với số thừa K=127, ta có: E - 127= 7
=>E=127+7 = 134
10
= 10000110
2
(8 bit)
f = 000011111
2
= 000 0111 1100 0000 0000 0000
2
(23bit)
Kết quả: 0 1000 0110 0000 1111 1000 0000 0000 000
2
-581.675
-581.675
10
= -1001000101.101
2
= -1.001000101101x2
9
=(-1)
S
× (1.f
1
f
2
…f
23
)× 2
(E-127)
Do -581.675 âm nên S = 1
10
= 1 (1 bit)
E = 127+9 = 136
10
= 10001000
2
(8 bit)
f =0010 0010 1101 0000 0000 000
2
(23 bit)
Kết quả: 1 10001000 0010 0010 1101 0000 0000 000
2
1150.6875
1150.6875
10
= 10001111110.1101
2
= 1.00011111101101 × 2
10
= (-1)
S
×(1. f
1
f
2
…f
23
)×2
(E-127)
S = 0
10
= 0 (1 bit)
E = 127 + 10 = 137
10
= 10001001
2
(8 bit)
f = 00011111101101
2
=00011111101101000000000
2
(23 bit)
Kết quả: 01000100100011111101101000000000
2
11257.125
11257.125
10
= 10101111111001.001
2
= 1. 0101111111001001
2
×2
13
= (-1)
S
× (1. f
1
f
2
…f
23
)×2
(E-127)
Do -11257.125 âm nên S = 1
10
= 1 (1 bit)
E = 127+13=140 = 10001100
2
(8 bit)
f = 0101111111001001 = 01011111110010010000000
2
(23 bit)
Kết quả:11000110001011111110010010000000
2