Bài tập số chấm động
1. Chuyển đổi các số sau đây thành biểu diễn dưới dạng nhị phân của số chấm động
2010 \= 1.0100 x 2^4
20.510 \= 1.0100101 x 2^4
0.110 \= 1 x 2^1
-5.610 \= 1.1110 x 2^1
2130 \= 2^130
2. Cho biết giá trị của các biểu diễn nhị phân của các số chấm động dưới đây
0100 0110 1101 1000 0000 0000 0000 00002
s = 0, E = 1000 11012 \= 14110 [n + 127] => n = 141 – 127 = 14 [dấu chấm dịch qua trái 14
đơn vị]
M = 101 1000 0000 0000 0000 00002
1.M = 1.101 1000 0000 0000 0000 0000
Dịch ngược dấu chấm về bên phải 14 đơn vị, ta được:
A \= 110110000000000.000000000
\= 27648.02
1011 1110 1110 0000 0000 0000 0000 0000
s = 1, E = 0111 11012 \= 12510 [-n + 127] => n = 2 [dấu chấm dịch qua phải 2 đơn vị]
M = 1100 0000 0000 0000 0000 0002
1.M = 1. 1100 0000 0000 0000 0000 000
Dịch ngược dấu chấm về bên trái 2 đơn vị, ta được:
B = 0.01110000000000000000000002
\= 0.087510
0101 1111 1011 1110 0100 0000 0000 0000
- 1. Nguyễn Ngọc Dũng – HCMUS Lớp : 09CK1 - MSSV: 0961027 Mụ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 ................................................................................................................................... 13 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.............................................................................................. 12 Figure 6: Quy tắt IEEE 754 .......................................................................................................... 13 Figure 7: Các phép toán trên Đại Số Bool .................................................................................... 14 1|Page
- 2. Nguyễn Ngọc Dũng – HCMUS Lớp : 09CK1 - MSSV: 0961027 Trà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ự. 8 7 6 5 4 3 2 1 128 64 32 16 8 4 2 1 0 0 0 0 0 1 1 0 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 2|Page
- 3. Nguyễn Ngọc Dũng – HCMUS Lớp : 09CK1 - MSSV: 0961027 Để 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ù : 11111001 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: 8 7 6 5 4 3 2 1 Kết quả 1 1 1 1 1 0 1 0 -27 + 26 + 25 + 24+ 23+ 22+ 21+ 20 = -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 3|Page
- 4. Nguyễn Ngọc Dũng – HCMUS Lớp : 09CK1 - MSSV: 0961027 Sử 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: CE9 [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: 9EC + 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*162 + 14*161 + 12*160 + 5*16-1 + 7*16-2 + 0*16-3 + 10*16-4 + 3*16-5 = 2540 , 33999919891357421875 4|Page
- 5. Nguyễn Ngọc Dũng – HCMUS Lớp : 09CK1 - MSSV: 0961027 Cá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 Cột 1 2 3 4 5 6 7 8 76 0 0 1 0 0 1 0 1 37 0 1 0 0 1 1 0 0 113 0 1 1 1 0 0 0 1 Bước Tại cột Thực hiện phép tính 1 8 1+0=1 2 7 0+0=0 3 6 1 + 1 = 10, viết 0 nhớ 1 4 5 0 + 1 = 1, cộng thêm 1 [nhớ ở bước 3], viết 0 nhớ 1 5 4 0 + 0 = 0, cộng thêm 1 [nhớ ở bước 4], viết 1 6 3 1+0=1 7 2 0+1=1 8 1 0+0=0 Vậy 00100101 [76] + 01001100 [37] = 01110001[113] Phép trừ: 00111100 [60] - 00011110 [30] __________________ 00011110 [30] Cột 1 2 3 4 5 6 7 8 60 0 0 1 1 1 1 0 0 30 0 0 0 1 1 1 1 0 30 0 0 0 1 1 1 1 0 5|Page
- 6. Nguyễn Ngọc Dũng – HCMUS Lớp : 09CK1 - MSSV: 0961027 Bước Tại cột Thực hiện phép tính 1 8 0–0=0 2 7 0 – 1 = -1, viết 1 nhớ -1 3 6 1 – 1 = 0, cộng với -1 bước 2 là -1, viết 1 nhớ -1 4 5 1 – 1 = 0, cộng với -1 bước 3 là -1, viết 1 nhớ -1 5 4 1 – 1 = 0, cộng với -1 bước 4 là -1, viết 1 nhớ -1 6 3 1 – 0 = 1, cộng với -1 bước 5 là 0. 7 2 0–0=0 8 1 0–0=0 Vậy 00111100 [60] – 00011110 [30] = 00011110 [30] Phép nhân: 1 0 1 0 [10] x 1 1 1 0 [14] _____________________ 00000000 + 0000 _____________________ 00000000 + 1010 _____________________ 00010100 + 1010 ______________________ 00111100 + 1010 ______________________ 1 0 0 0 1 1 0 0 [140] Phép chia: 6|Page
- 7. Nguyễn Ngọc Dũng – HCMUS Lớp : 09CK1 - MSSV: 0961027 Vậ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 _______________ 11100010 7|Page
- 8. Nguyễn Ngọc Dũng – HCMUS Lớp : 09CK1 - MSSV: 0961027 NOT [~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 Ban đầu: 01010101 [85] 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ý] 8|Page
- 9. Nguyễn Ngọc Dũng – HCMUS Lớp : 09CK1 - MSSV: 0961027 + Thêm 0 từ phải sang trái theo số bit yêu cầu Ban đầu: 01010101 Dịch logic trái 1 bit: 10101010 Tính nhanh: 85*21 = 170 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 1 hoặc 0 [dựa vào số đầu tiên] từ trái sang phải theo số bit yêu cầu Ban đầu: 10101011 [-85] Dịch logic phải 2 bit: 11101010 Ban đầu: 00010111 Dịch logic phải 1 bit: 00001011 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 Ban đầu: 10101011 [-85] Dịch logic trái 2 bit: 1010110 0 Ban đầu: 00010111 Dịch logic trái 1 bit: 00101110 3/ Phép quay trái – phải a/ Quay phải. Ban đầu: 10100110 Quay phải 3 bit: 11010100 b/ Quay trái. 9|Page
- 10. Nguyễn Ngọc Dũng – HCMUS Lớp : 09CK1 - MSSV: 0961027 Ban đầu: 10100110 Quay trái 3 bit: 00110101 Số 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 10 | P a g e
- 11. Nguyễn Ngọc Dũng – HCMUS Lớp : 09CK1 - MSSV: 0961027 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 2100000010 ~ - [1 + 2-1 + 2-2 + 2-4 + 2-6] x 23 = k = -14.625 Biể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] 11 | P a g e
- 12. Nguyễn Ngọc Dũng – HCMUS Lớp : 09CK1 - MSSV: 0961027 Figure 5: Các quy tắt của IEEE 754 12 | P a g e
- 13. Nguyễn Ngọc Dũng – HCMUS Lớp : 09CK1 - MSSV: 0961027 Figure 6: Quy tắt IEEE 754 13 | P a g e
- 14. Nguyễn Ngọc Dũng – HCMUS Lớp : 09CK1 - MSSV: 0961027 Đại số Bool Figure 7: Các phép toán trên Đại Số Bool 14 | P a g e