Biến đổi qua lại giữa các hệ thống số
Khi đã có nhiều hệ thông số, việc xác định giá trị tương đương của một số trong hệ này so với hệ kia là cần thiết. Phần sau đây cho phép ta biến đổi qua lại giữa các số trong bất cứ hệ nào sang bất cứ hệ khác trong các hệ đã được giới thiệu. ...
Khi đã có nhiều hệ thông số, việc xác định giá trị tương đương của một số trong hệ này so với hệ kia là cần thiết. Phần sau đây cho phép ta biến đổi qua lại giữa các số trong bất cứ hệ nào sang bất cứ hệ khác trong các hệ đã được giới thiệu.
Đổi một số từ hệ b sang hệ 10
Để đổi một số từ hệ b sang hệ 10 ta triển khai trực tiếp đa thức của b
Một số N trong hệ b:
N = (anan-1an-2. . .ai . . .a0 , a-1a-2 . . .a-m)b với ai ∈ Sb
Có giá trị tương đương trong hệ 10 là:
N = an bn + an-1bn-1 +. . .+ aibi +. . . + a0b0+ a-1 b-1 + a-2 b-2 +. . .+ a-mb-m.
Thí dụ:
* Đổi số 10110,112 sang hệ 10
10110,112 = 1x24 + 0 + 1x22 + 1x2 + 0 + 1x2-1 + 1x2‑2= 22,7510
* Đổi số 4BE,ADH sang hệ 10
4BE,ADH=4x162+11x161+14x160+10x16-1+13x16-2 = 1214,67510
Đổi một số từ hệ 10 sang hệ b
Đây là bài toán tìm một dãy ký hiệu cho số N viết trong hệ b.
Tổng quát, một số N cho ở hệ 10, viết sang hệ b có dạng:
N = (anan-1 . . .a0 , a-1a-2 . . .a-m)b = (anan-1 . . .a0)b + (0,a-1a-2 . . .a-m)b
Trong đó
(anan-1 . . .a0)b = PE(N) là phần nguyên của N
và (0,a-1a-2 . . .a-m)b = PF(N) là phần lẻ của N
Phần nguyên và phần lẻ được biến đổi theo hai cách khác nhau:
Phần nguyên:
Giá trị của phần nguyên xác định nhờ triển khai:
PE(N) = anbn +an-1bn-1 + . . .+ a1b 1+ a0b0
Hay có thể viết lại
PE(N) = (anbn-1 +an-1bn-2 + . . .+ a1)b + a0
Với cách viết này ta thấy nếu chia PE(N) cho b, ta được thương số là PE’(N) = (anbn-1 +an-1bn-2 + . . .+ a1) và số dư là a0.
Vậy số dư của lần chia thứ nhất này chính là số mã có trọng số nhỏ nhất (a0) của phần nguyên.
Lặp lại bài toán chia PE’(N) cho b:
PE’(N) = anbn-1 +an-1bn-2 + . . .+ a1= (anbn-2 +an-1bn-3 + . . .+ a2)b+ a1
Ta được số dư thứ hai, chính là số mã có trọng số lớn hơn kế tiếp (a1) và thương số là PE”(N)= anbn-2 +an-1bn-3 + . . .+ a2.
Tiếp tục bài toán chia thương số có được với b, cho đến khi được số dư của phép chia cuối cùng, đó chính là số mã có trọng số lớn nhất (an)
Phần lẻ:
Giá trị của phần lẻ xác định bởi:
PF(N) = a-1 b-1 + a-2 b-2 +. . .+ a-mb-m
Hay viết lại
PF(N) = b-1 (a-1 + a-2 b-1 +. . .+ a-mb-m+1 )
Nhân PF(N) với b, ta được : bPF(N) = a-1 + (a-2 b-1 +. . .+ a-mb-m+1 ) = a-1+ PF’(N).
Vậy lần nhân thứ nhất này ta được phần nguyên của phép nhân, chính là số mã có trọng số lớn nhất của phần lẻ (a-1) (số a-1 này có thể vẫn là số 0).
PF’(N) là phần lẻ xuất hiện trong phép nhân.
Tiếp tục nhân PF’(N) với b, ta tìm được a-2 và phần lẻ PF”(N).
Lặp lại bài toán nhân phần lẻ với b cho đến khi kết quả có phần lẻ bằng không, ta sẽ tìm được dãy số (a-1a-2 . . .a-m).
Chú ý: Phần lẻ của số N khi đổi sang hệ b có thể gồm vô số số hạng (do kết quả của phép nhân luôn khác 0), điều này có nghĩa là ta không tìm được một số trong hệ b có giá trị đúng bằng phần lẻ của số thập phân, vậy tùy theo yêu cầu về độ chính xác khi chuyển đổi mà người ta lấy một số số hạng nhất định.
Thí dụ:
* Đổi 25,310 sang hệ nhị phân
Phần nguyên: 25 : 2 = 12 dư 1 ⇒ a0 = 1
12 : 2 = 6 dư 0 ⇒ a1 = 0
6 : 2 = 3 dư 0 ⇒ a2 = 0
3 : 2 = 1 dư 1 ⇒ a3 = 1
thương số cuối cùng là 1 cũng chính là bit a4:
⇒ a4 = 1
Vậy PE(N) = 11001
Phần lẻ: 0,3 * 2 = 0,6 ⇒ a-1 = 0
0,6 * 2 = 1,2 ⇒ a -2 = 1
0,2 * 2 = 0,4 ⇒ a-3 = 0
0,4 * 2 = 0,8 ⇒ a-4 = 0
0,8 * 2 = 1,6 ⇒ a-5 = 1 . . .
Nhận thấy kết quả của các bài toán nhân luôn khác không, do phần lẻ của lần nhân cuối cùng là 0,6, đã lặp lại kết quả của lần nhân thứ nhất, như vậy bài toán không thể kết thúc với kết quả đúng bằng 0,3 của hệ 10.
Giả sử bài toán yêu cầu lấy 5 số lẻ thì ta có thể dừng ở đây và
PF(N) = 0,01001.
Kết quả cuối cùng là:
25,310 = 11001,010012
* Đổi 1376,8510 sang hệ thập lục phân
Phần nguyên: 1376 : 16 = 86 số dư = 0 ⇒ a0 = 0
86 : 16 = 5 số dư = 6 ⇒ a1 = 6 & ⇒ a2 = 5
137610 = 560H
Phần lẻ: 0,85 * 16 = 13,6 ⇒ a-1 = 1310=DH
0,6 * 16 = 9,6 ⇒ a -2 = 9
0,6 * 16 = 9,6 ⇒ a-3 = 9
Nếu chỉ cần lấy 3 số lẻ: 0,8510= 0,D99H
Và kết quả cuối cùng:
1376,8510 = 560,D99H
Đổi một số từ hệ b sang hệ bk và ngược lại
Từ cách triển khai đa thức của số N trong hệ b, ta có thể nhóm thành từng k số hạng từ dấu phẩy về hai phía và đặt thành thừa số chung
N = anbn +. . . +a5b5 +a4b4 +a3b3 +a2b2 +a1b1 +a0b0 +a-1 b-1 +a-2 b-2 +a-3 b-3. . .+a-mb-m
Để dễ hiểu, chúng ta lấy thí dụ k = 3, N được viết lại bằng cách nhóm từng 3 số hạng, kể từ dấu phẩy về 2 phía
N = ...+ (a5b2 +a4b1 + a3b0)b3 + (a2b2 + a1b1 + a0b0 )b0+ (a-1 b2 + a-2 b1 + a-3b0)b-3 +...
Phần chứa trong mỗi dấu ngoặc luôn luôn nhỏ hơn b3 , vậy số này tạo nên một số trong hệ b3 và lúc đó được biểu diễn bởi ký hiệu tương ứng trong hệ này.
Thật vậy, số N có dạng:
N = ...+A2B2+A1B1+A0B0 + A-1B-1 +...
Trong đó:
B=b3 (B0=b0; B1=b3; B2=b6, B-1=b-3 ....)
A2= a8b2 +a7b1 + a6b0 = b3(a8b-1 +a7b-2 + a6b-3) < B=b3
A1= a5b2 +a4b1 + a3b0 = b3(a5b-1 +a4b-2 + a3b-3) < B=b3
A0= a2b2 + a1b1 + a0b0 = b3(a2b-1 +a1b-2 + a0b-3) < B=b3
Các số Ai luôn luôn nhỏ hơn B=b3 như vậy nó chính là một phần tử của tập hợp số tạo nên hệ B=b3
Ta có kết quả biến đổi tương tự cho các hệ số k khác.
Tóm lại, để đổi một số từ hệ b sang hệ bk, từ dấu phẩy đi về hai phía, ta nhóm từng k số hạng, giá trị của mỗi k số hạng này (tính theo hệ b) chính là số trong hệ bk .
Thí dụ:
* Đổi số N = 10111110101 , 011012 sang hệ 8 = 23
Từ dấu phẩy, nhóm từng 3 số hạng về hai phía (nếu cần, thêm số 0 vào ở nhóm đầu và cuối để đủ 3 số hạng mà không làm thay đổi giá trị của số N):
N = 010 111 110 101 , 011 0102
Ghi giá trị tương ứng của các số 3 bit, ta được số N trong hệ 8
N = 2 7 6 5 , 3 2 8
* Đổi số N trên sang hệ 16 = 24
Cũng như trên nhưng nhóm từng 4 số hạng
N = 0101 1111 0101 , 0110 10002
N = 5 F 5 , 6 8 16
Từ kết quả của phép đổi số từ hệ b sang hệ bk, ta có thể suy ra cách biến đổi ngược một cách dễ dàng: Thay mỗi số hạng của số trong hệ bk bằng một số gồm k số hạng trong hệ b.
Thí dụ để đổi số N = 5 F5, 6816 (hệ 24) sang hệ nhị phân (2) ta dùng 4 bit để viết cho mỗi số hạng của số này:
N = 0101 1111 0101 , 0110 10002
Đổi một số từ hệ bk sang hệ bp
Qua trung gian của hệ b, ta có thể đổi từ hệ bk sang hệ bp. Muốn đổi số N từ hệ bk sang hệ bp, trước nhất đổi số N sang hệ b rồi từ hệ b tiếp tục đổi sang hệ bp.
Thí dụ:
- Đổi số 1234,678 sang hệ 16
1234,678 = 001 010 011 100,110 1112 = 0010 1001 1100,1101 11002 = 29C,DCH
- Đổi số ABCD,EFH sang hệ 8
ABCD,EFH = 1010 1011 1100 1101,1110 11112 = 1 010 101 111 001 101,111 011 1102 = 125715,7368
Dưới đây là bảng kê các số đầu tiên trong các hệ khác nhau:
Bảng 1.1