9 Figure 4: Bảng số chuyển đổi nhị phân của phần thập phân ..... Các số khác tương tự.. Cách trên đây dùng để biễu diễn số dương... Mô phỏng một số phép toán trên hệ nhị phân: cộng, trừ,
Trang 1Mục Lục
THẬP PHÂN => NHỊ PHÂN 2
Chuyển Đồi Sang Nhị Phân Số Dương – Số Âm 2
THẬP PHÂN => HEX 4
HEX => THẬP PHÂN 4
Các phép toán + - AND – OR – XOR - NOT 5
Phép cộng: 5
Phép trừ: 5
Phép nhân: 6
Phép chia: 6
Tính toán luận lý AND – OR – XOR – NOT 7
AND (a&b) 7
OR (a|b) 7
XOR (a^b) 7
NOT (~a) 8
Phép Dịch và phép Quay 8
1/ Phép dịch logic (luận lý) 8
2/ Phép dịch số học 9
3/ Phép quay trái – phải 9
Số chấm động 10
Đại số Bool 12
Figure 1 : Dịch phải Logic (luận lý) 8
Figure 2: Dịch trái logic (luận lý) 8
Figure 3: Dịch phải số học 9
Figure 4: Bảng số chuyển đổi nhị phân của phần thập phân 10
Figure 5: Các quy tắt của IEEE 754 11
Figure 6: Quy tắt IEEE 754 12
Figure 7: Các phép toán trên Đại Số Bool 13
Trang 2Tràn số
+ Tràn số đối với số ko dấu: nhớ ra 1 bit
+ Tràn số với số có dấu:
- Dương + Dương = Âm && Âm + Âm = Dương
- Dương + Âm && Âm + Dương => Ko bao giờ tràn số
THẬP PHÂN => NHỊ PHÂN
Chuyển Đồi Sang Nhị Phân Số Dương – Số Âm
1 Tự nghĩ ra 5 số nguyên trong phạm vi -256 đến +256, thử đổi số đó sang hệ nhị phân (dùng 10 bit để biểu diễn)
Nhập vào số nguyên: 6
Biểu diễn nhị phân tương ứng: 00 0000 0110
Nhập vào số nguyên: 7
Biểu diễn nhị phân tương ứng: 00 0000 0111
Nhập vào số nguyên: 8
Biểu diễn nhị phân tương ứng: 00 0000 1000
Cách 1:
Biểu diễn ở 8 bit, ta se có như sau: Ta sẽ kiểm tra số 6: 6 = 4 + 2 Ta nhận thấy 4 và 2 có gia trị trong bảng => ta sẽ check số 1 vào, còn những ô còn lại là 0 Các số khác tương tự
Cách 2: Ta lấy số hệ cơ số 10 chia 2 lấy dư Số chia hết cho 2 sẽ là 0, số ko chia hết cho 2 sẽ
là 1
Cách trên đây dùng để biễu diễn số dương
Nhập vào số nguyên: -6
Biểu diễn nhị phân tương ứng: 11 1111 1010
Nhập vào số nguyên: -7
Biểu diễn nhị phân tương ứng: 11 1111 1001
Trang 3Để biểu diễn 1 số âm, ta làm như sau:
Bước 1: Đầu tiên ta lấy số đối của nó:
Ví dụ : 6 số đối sẽ là -6
Quy đổi sang hệ nhị phân số đối (6), ta se được như sau: 0 0 0 0 0 1 1 0
Bước 2:Lấy bù 1 của dãy nhị phân của số 6:
Ban đầu: 0 0 0 0 0 1 1 0
Bù 1 : 1 1 1 1 1 0 0 1
Note: thấy 0 chuyển sang 1 và 1 sang 0
Bước 3: Sau khi có bù 1, ta tiến hành kiếm bù 2:
Ta sẽ công thêm 1 vào dãy bù :
1 1 1 1 1 0 0 1
1
_
11 1111 1010 => bù 2
Dãy bù 2 vừa mới có chính là biễu diễn nhị phân của -6
Bước 4: Kiểm tra, ta dùng cách sau:
-2 7 + 2 6 + 2 5 + 2 4 + 2 3 + 2 2 + 2 1 + 2 0 = -6
1 Tự nghĩ ra 5 số nhị phân (dùng 10 bit để biểu diễn), thử đổi các số đó sang hệ 10
Dãy nhị phân: 11 1111 1000
Số nguyên tương ứng: -8
Dãy nhị phân: 00 0000 1001
Số nguyên tương ứng: 9
Dãy nhị phân:11 1111 0111
Số nguyên tương ứng: -9
Dãy nhị phân:00 0000 1010
Số nguyên tương ứng: 10
Dãy nhị phân:11 1111 0110
Số nguyên tương ứng: -10
Trang 4Sử dụng ngược lại cách đổi từ hệ cơ số 10 => hệ cơ số 2, cách trên:
THẬP PHÂN => HEX
1/ Chuyển đổi 2540,34 (thập phân) sang hex
+ Chuyển đổi phần nguyên : 2540
2540 : 16 = 158 , dư 12 => C
158 : 16 = 9 , dư 14 => E
9 : 16 = 0 , dư 9 => 9
KQ tạm thời: CE 9 (1)
Sau khi convert phần nguyên xong, để lấy kết quả, ta tiến hành đảo ngược chuỗi (1)
KQ1: 9 EC
+ Chuyển đổi phần thập phân: 0.34
0.34 * 16 = 5.44 lấy 5 => 5
5.44 – 5 = 0.44 => 0.44 * 16 = 7.04 lấy 7 => 7
7.04 – 7 = 0.04 => 0.04 * 16 = 0.64 lấy 0 => 0
0.64 – 0 = 0.64 => 0.64 * 16 = 10.24 lấy 10 => A
10.24 – 10 = 0.24 => 0.24 * 16 = 3.84 lấy 3 => 3
Sau khi convert phần thập phân xong, để lấy kết quả, ta ko đảo chuỗi
KQ2: 0.570A3…
KQ cuối cùng : 9EC, 570A3
HEX => THẬP PHÂN
1/ Chuyển đổi 9EC, 570A3 sang thập phân
+ 9EC , 570A3 = 9*16 2 + 14*16 1 + 12*16 0 + 5*16 -1 + 7*16 -2 + 0*16 -3 + 10*16 -4 + 3*16 -5
= 2540 , 33999919891357421875
Trang 5Các phép toán + - AND – OR – XOR - NOT
2 Mô phỏng một số phép toán trên hệ nhị phân: cộng, trừ, nhân, chia
Phép cộng:
00100101 (76) +
01001100 (37) _
01110001
Vậy 00100101 (76) + 01001100 (37) = 01110001(113)
Phép trừ:
00111100 (60)
-
00011110 (30)
00011110 (30)
Trang 6Bước Tại cột Thực hiện phép tính
Vậy 00111100 (60) – 00011110 (30) = 00011110 (30)
Phép nhân:
1 0 1 0 (10)
x
1 1 1 0 (14)
_
0 0 0 0 0 0 0 0
+
0 0 0 0
_
0 0 0 0 0 0 0 0
+
1 0 1 0
_
0 0 0 1 0 1 0 0
+
1 0 1 0
0 0 1 1 1 1 0 0
+
1 0 1 0
1 0 0 0 1 1 0 0 (140)
Phép chia:
Trang 7Vậy 1001011 (75) / 1110 (14) = 5 dư 5
Tính toán luận lý AND – OR – XOR – NOT
AND (a&b)
+ Bit nào cần giữ thì AND với 1, ko giữ AND với 0
Vd:
11010110
AND
00110101
_
00010100
OR (a|b)
+ Bit nào cần bật lên thì OR với 1, bit nào ko quan tâm thì OR với 0 Vd:
11010110
OR
00110100
_
11110110
XOR (a^b)
11010110
XOR
00110100
_
1110001
Trang 8NOT (~a)
NOT 11010110
_
00101001
Phép Dịch và phép Quay
1/ Phép dịch logic (luận lý)
a/ Dịch phải logic (luận lý) | chia
Figure 1 : Dịch phải Logic (luận lý)
+ Thêm 0 từ trái sang phải theo số bit yêu cầu
Dịch logic phải 2 bit: 00010101 (21) Tính nhanh: 85/22
= 21.25 lấy phần nguyên: 21
b/ Dịch trái logic (luận lý) | nhân
Figure 2: Dịch trái logic (luận lý)
Trang 9+ Thêm 0 từ phải sang trái theo số bit yêu cầu
Dịch logic phải 1 bit: 11010100 Tính nhanh: 85*2 1
= 21.25 lấy phần nguyên: 170 2/ Phép dịch số học
a/ Dịch phải số học | chia
Figure 3: Dịch phải số học
+ Thêm 0 từ trái sang phải theo số bit yêu cầu
Dịch logic phải 2 bit: 00010101 (21) Tính nhanh: 85/22
= 21.25 lấy phần nguyên: 21
b/ Dịch trái số học | nhân
+ Thêm 0 từ phải sang trái theo số bit yêu cầu
Dịch logic phải 1 bit: 11010100 Tính nhanh: 85*2 1
= 21.25 lấy phần nguyên: 170
3/ Phép quay trái – phải
a/ Quay phải
Quay phải 3 bit: 11010100
b/ Quay trái
Quay trái 3 bit: 00110101
Trang 10Số chấm động
6 Biểu diễn số chấm động
Figure 4: Bảng số chuyển đổi nhị phân của phần thập phân
Cho x = -14.625
Bước 1: Chuyển đổi số 14 sang hệ nhị phân và chuyển đổi 0.625 sang nhị phân
* 14 = 1110
* 0.625 ( 0.625 = 0.5 + 0 + 0125 = 101)
+ 0.625 x 2 = 1.25 => 1
+ 1.25 – 1 = 0.25 => 0.25 x 2 = 0.5 => 0
+1 – 0.5 = 0.5 => 0.5 x 2 = 1 => 1
+ 1 – 1 = 0
0.625 = 101
-14.625 = 1110.101 => 1.110101 x 23
k = 3
Bước 2: Chuyển đổi sang biểu diễn chấm động
Sign (là phần dấu) : - = 1
Exponet (Phần mũ) = k + 127 = 3 + 127 = 130 => 100000010
Significand (Phần trị) = 11010100000000000000000
Biểu diễn chấm động: 1 100000010 11010100000000000000000
Chuẩn số chấm động IEEE 754
+ Biểu diễn chấm động: 1 100000010 11010100000000000000000
+ Chuẩn IEEE 754:
- 1 11010100000000000000000 x 2 100000010
~ - (1 + 2 -1 + 2 -2 + 2 -4 + 2 -6 ) x 2 3 = k = -14.625
Trang 11Biểu diễn bias của số vô hạn tuần hoàn
Cho x = 1/3
X = 0.333…
= ¼ + 1/16 + 1/64 + 1/256 + …
= 0101010101… x 20
= 1.01010101… x 2-2 (k = -2)
Sign (lấy dấu) : 0
Exponent (phần mũ): 127 – 2 = 125 = 01111101
Significand (phần trị): 01010101010101010101010
Biểu diễn chấm động: 0 01111101 01010101010101010101010
Chú ý:
Các số đặc biệt:
+ Phần mũ = 0 && Phần trị = 0 => số zero
+ Phần mũ = 0 && Phần trị != 0 => số dạng ko chuẩn
+ Phần mũ = 1 (all) && Phần trị = 0 => ∞ (infinity )
+ Phần mũ = 1 (all) && Phần trị != 0 => số báo lỗi (NaN – Not a Number)
Figure 5: Các quy tắt của IEEE 754
Trang 12Figure 6: Quy tắt IEEE 754
Trang 13Đại số Bool
Figure 7: Các phép toán trên Đại Số Bool