Mã gray là gì

I.MÃ SỐ

1.Mã BCD

 Trực tiếp liên quan đến mạch số (bao gồm các hệ thống sử dụng số) là các số nhị phân nên mọi thông tin dữ liệu dù là số lượng, các chữ , các dấu, các mệnh lệnh  sau cùng cũng phải ở dạng nhị phân thì mạch số mới hiểu ra và xử lý được. Do đó phải có quy định cách thức mà các số nhị phân được dùng để biểu thị các dữ liệu khác nhau, kết quả là có nhiều mã số (gọi tắt là mã) được dùng. Trước tiên mã số thập phân thông dụng nhất là mã BCD ( Binary Coded Decimal: mã số thập phân được mã hóa theo nhị phân ). Sự chuyển đổi thập phân sang BCD và ngược lại gọi là mã hoá và sự lặp mã.

1.1.Chuyển đổi thập phân sang BCD và ngược lại

Người ta biểu thị các số thập phân từ 0 đến 9 bởi số nhị phân 4 bit có giá trị như bảng dưới đây.

Mã gray là gì

Chúng ta nên chú ý rằng: mã BCD phải được viết đủ 4 bit và sự tương ứng chỉ được áp dụng cho số thập phân từ 0 đến 9, nên số nhị phân từ 1010 (= 1010) đến 1111 (= 1510) của số nhị phân 4 bit không phải là mã BCD.

Khi chuyển đổi qua lại giữa thập phân và BCD ta làm như ví dụ minh họa sau đây:

Ví dụ 1: Ðổi 48910 sang mã BCD

Mã gray là gì

Ví dụ 2: Đổi 53710 sang mã BCD

Mã gray là gì

Ví dụ 3: Đổi 00110100100101012 (BCD) sang số thập phân

Mã gray là gì

1.2.So sánh BCD và số nhị phân

 Điều quan trọng là phải nhận ra rằng BCD không phải là hệ thống số như hệ thống số thập phân, nhị phân, bát phân và thập lục phân. Thật ra, BCD là hệ thập phân với từng ký số được mã hóa thành giá trị nhị phân tương đương. Cũng phải hiểu rằng một số BCD không phải là số nhị phân quy ước. Mã nhị phân quy ước biểu diễn số thập phân hoàn chỉnh ở dạng nhị phân; Còn mã BCD chỉ chuyển đổi từng ký số thập phân sang số nhị phân tương ứng.

 Mã BCD cần nhiều bit hơn để biểu diễn các số thập phân nhiều ký số (2 ký số trở lên. Điều này là do mã BCD không sử dụng tất cả các nhóm 4 bit có thể có, vì vậy có phần kém hiệu quả hơn.

 Ưu điểm của mã BCD là dể dàng chuyển đổi từ thập phân sang nhị phân và ngược lại. Chỉ cần nhớ các nhóm mã 4 bit ứng với các ký số thập phân từ 0 đến 9.

Phối hợp các hệ thống số

Các hệ thống số đã trình bày có mối tương quan như bảng sau đây:

1.3.CỘNG BCD

Khi tổng nhỏ hơn hoặc bằng 9 thì ta thực hiện phép cộng BCD như cộng nhị phân bình thường.

Ví dụ: xét phép cộng 6 và 2, dùng mã BCD biểu diễn mối ký số

Mã gray là gì

Một ví dụ khác, cộng 45 với 33

Mã gray là gì

Tổng lớn hơn 9

Ta xét phép cộng 5 và 8 ở dạng BCD:

Mã gray là gì

Tổng của phép cộng ở trên là 1101 không tồn tại trong mã BCD. Điều này xảy ra do tổng của hai ký số vượt quá 9. Trong trường hợp này ta phải hiệu chỉnh bằng cách cộng thêm 6 (0110) vào nhằm tính đến việc bỏ qua 6 nhóm mã không hợp lệ.

Ví dụ:

Mã gray là gì

Một ví dụ khác:

Mã gray là gì

2.Mã ASCII

Mã chữ số được sử dụng rộng rãi nhất hiện nay là mã ASCII (American Standard Code for Information Interchange). Mã ASCII là mã 7 bit, nên có 27 = 128 nhóm mã, đủ để biểu thị tất cả ký tự của một bàn phím chuẩn cũng như các chức năng điều khiển. Bảng dưới đây minh họa một phần danh sách mã ASCII.

Ký tựMã ASCII 7 bitBát phânThập phânA

B

C

D

E

F

G

H

I

J

K

L

M

N

O

P

Q

R

S

T

U

V

W

X

Y

Z

0

1

2

3

4

5

6

7

8

9

<ký tự riêng>

.

(

+

$

*

)

_

/

,

=

<RETURN>

<LINEFEED>

100  0001`

100  0010

100  0011

100  0100

100  0101

100  0110

100  0111

100  1000

100  1001

100  1010

100  1011

100  1100

100  1101

100  1110

100  1111

101  0000

101  0001

101  0010

101  0011

101  0100

101  0101

101  0110

101  0111

101  1000

101  1001

101  1010

011  0000

011  0001

011  0010

011  0011

011  0100

011  0101

011  0110

011  0111

011  1000

011  1001

010  0000

010  1110

010  1000

010  1011

010  0100

010  1010

010  1001

010  1101

010  1111

010  1100

010  1101

000  1101

000  1010

 

101

102

103

104

105

106

107

110

111

112

113

114

115

116

117

120

121

122

123

124

125

126

127

130

131

132

060

061

062

063

064

065

066

067

070

071

040

056

050

053

044

052

051

055

057

054

075

015

012

41

42

43

44

45

46

47

48

49

4A

4B

4C

4D

4E

4F

50

51

52

53

54

55

56

57

58

59

5A

30

31

32

33

34

35

36

37

30

39

20

2E

28

2B

24

2A

29

2D

2F

2C

2D

0D

0A

3.MÃ THỪA 3 (Excess – 3 code)

Bảng dưới đây cho biết mã số thừa 3 ứng với số thập phân từ 0 đến 9. Để chuyển đổi số thập phân sang mã thứa 3 trước tiên ta thêm 3 vào số thập phân đó rồi chuyển sang nhị phân bình thường.

Ví dụ:

Mã gray là gì

  •  210  g 2 + 3 = 510   = 0101
  •  510  g 5 + 3 = 810  = 1000

Do cách viết số  thập phân ra mã thừa 3 tương tự như cách viết số thập phân ra mã BCD đã nói ở trước, nên người ta có thể hiểu mã thừa 3 là một dạng của mã BCD. Để dể phân biệt mã BCD đã nói đến ở phần trước được gọi là mã BCD 8421.

4.MÃ GRAY

Bảng dưới đây trình bày mã số Gray cùng với mã số nhị phân và thập phân từ 0 đến 15. Mã Gray được chọn sao cho chỉ thay đổi một vị trí bit giữa hai mã kế nhau.

Mã gray là gì

5.THÊM BIT CHẴN LẺ ĐỂ PHÁT HIỆN SAI

Tín hiệu biểu thị số nhị phân truyền từ mạch này sang mạch khác, và nhất là truyền đi xa bị méo dạng và nhiễm nhiễu khiến số nhị phân nhận được có thể sai so với  số cần truyền. Để khắc phục hiện tượng này người ta thêm vào mã ASCII 7 bit một bit chẳn lẻ (Parity bit) ở vị trí có nghĩa cao nhất (bên trái) để có dữ liệu 8 bit (1 bit chẵn lẻ, 7 bit dữ liệu gốc). Ở cách dùng lẻ (Odd parity) thì bit parity thay đổi để làm cho tổng số bít 1 trong byte là lẻ. Ví dụ:

Mã gray là gì

Ở cách dùng chẵn (Even parity) thì bit parity thay đổi để cho tổng số bit 1 trong byte là chẵn. Ví dụ:

Mã gray là gì

Bằng các thuật toán, các mạch số sẽ đếm tổng số bit cùng loại trong byte nhận được để xử lý, nếu dữ liệu xử lý không khớp với qui ước về bit chẵn lẻ, số đó sẽ được mạch nhận biết là số bị sai.

II.CHUYỂN ĐỔI GIỮA CÁC HỆ THỐNG SỐ

2.1.ĐỔI TỪ NHỊ PHÂN SANG THẬP PHÂN

Mỗi ký số nhị phân (bit) có một trọng số dựa trên vị trí của nó. Bất kỳ số nhị phân nào cũng đều có thể đổi thành số thập phân tương đương bằng cách cộng các trọng số tại những vị trí có bit 1.

Để hiểu rõ hơn ta xét một vài ví dụ sau đây:

Mã gray là gì

Mã gray là gì

Mã gray là gì

2.2.ĐỔI TỪ THẬP PHÂN SANG NHỊ PHÂN

Có hai cách chuyển đổi một số thập phân sang nhị phân tương đương.

 * Phương pháp thứ nhất là cách đi ngược lại quá trình đổi nhị phân sang thập phân, đó là : số thập phân được trình bày dưới dạng tổng các lũy thừa của 2, sau đó ghi các kí số 0 và 1 vào vị trí bit tương ứng.

Mã gray là gì

 * Cách thứ hai giúp chuyển đổi từ số thập phân nguyên sang nhị phân là dùng phương pháp lặp lại phép chia cho 2. Ví dụ, với một số thập phân 27 ta thực hiện phép chia số này cho 2 và ghi lại số dư sau mỗi lần chia cho đến khi thu được thương số bằng 0, và kết quả nhị phân hình thành bằng cách viết số dư đầu tiên là LSB và số dư cuối cùng là MSB.

Mã gray là gì

Mã gray là gì

Quá trình chuyển đổi bằng phương pháp này được minh họa bằng lưu đồ sau đây:

Mã gray là gì

Lưu đồ trên biểu diển phương pháp lặp lại phép chia để chuyển đổi số nguyên thập phân sang nhị phân. Phương pháp này cũng được sử dụng để chuyển đổi số nguyên thập phân sang bất ký hệ thống số nào khác.

2.3.ĐỔI TỪ BÁT PHÂN SANG THẬP PHÂN

Ta dể dàng đổi số bát phân sang thập phân tương đương bằng cách nhân từng ký số bát phân với trọng số của nó, rồi cộng kết quả với nhau.

Ví dụ 7: Đổi số bát phân 4708 thành số thập phân

                  4758        =   4x(82)   +   7x(81)    +   5x(80)

                                 =   4×64     +   7×8        +   5×1

                                 =   31710

Ví dụ 8: Đổi số bát phân 34.6 thành số thập phân

34.68       =      3x(81)  +  4x(80)  +  6x(8-1)

               =      24       +  4         +  0.75

               =      28.7510

2.4.ĐỔI TỪ THẬP PHÂN SANG BÁT PHÂN

Có thể dùng phương pháp lặp lại phép chia để đổi một số nguyên thập phân sang bát phân tương đương, với số chia là 8.

Ví dụ 9: Đổi số thập phân 36510 thành số bát phân tương đương

Mã gray là gì

Chú ý một điều là: số dư đầu tiên là số có giá trị nhỏ nhất (LSB) của số bát phân, số dư cuối cùng là số có giá trị lớn nhất (MSB) của số bát phân.

2.5.ĐỔI TỪ BÁT PHÂN SANG NHỊ PHÂN

Phép đổi từ bát phân sang nhị phân đuợc thực hiện bằng cách đổi từng ký số bát phân sang số nhị phân 3 bit tương đương. Tám ký số bát phân được đổi như bảng sau đây:

Mã gray là gì

Ví dụ 10:

        Đổi số  3468 sang nhị phân

Mã gray là gì

 →Như vậy số bát phân 3468 tương đương với số nhị phân 0111001102

Đổi số 324710 sang nhị phân

Mã gray là gì

→Như vậy số bát phân 32478 tương đương với số nhị phân: 0110101001112

2.6.ĐỔI TỪ NHỊ PHÂN SANG BÁT PHÂN

Đổi từ số nguyên nhị phân sang bát phân được thực hiêïn ngược lại với quá trình đổi từ bát phân sang nhị phân. Các bit của số nhị phân được nhóm thành từng nhóm 3 bit, bắt đầu từ LSB. Sau đó mỗi nhóm được đổi sang số bát phân tương đương.

Ví dụ 11: đổi số nhị phân  1001101102 thành số bát phân

Mã gray là gì

Như vậy số nhị phân 1001101102 tương đương với số bát phân 4668

khi không đủ 3 bit cho nhóm còn lại, trường hợp này ta sẽ thêm một hoặc hai bit 0 vào bên trái MSB của số nhị phân để đủ cho nhóm sau cùng.

Ví dụ 14: đổi số 110111012 thành số bát phân

Mã gray là gì

Cách đếm trong hệ bát phân: trong hệ bát phân ký số lớn nhất là 7 vì vậy trong cách đếm bát phân, vị trí ký số tăng từ 0 đến 7, tiếp đó ta lặp lại từ 0 cho đến vòng kế tiếp và tăng vị trí ký số lên 1.

Mã gray là gì

Như vậy với N vị trí số bát phân thì ta có thể đếm từ 0 đến 8N – 1, tổng cộng có 8N số đếm khác nhau. Ví dụ: với 4 vị trí ký số bát phân ta có thể đếm từ 00008 đến 77778.

2.7.ĐỔI TỪ THẬP LỤC PHÂN SANG THẬP PHÂN

Một số thập lục phân có thể được đổi thành số thập phân tương đương dựa vào dữ liệu mỗi vị trí ký số thập lục phân có trọng số là lũy thừa 16. LSD có trọng số là 160, ký số thập lục phân ở vị trí tiếp theo có số mũ tăng lên. Quá trình chuyển đổi như sau:

Ví dụ ta đổi một số thập lục phân 45616 sang số thập phân tương đương ta làm như sau:

45616      =  4×162  +  5×161  +  6×160

              =  4×256  +  5×16   +  6×1

     =  1024    +  80      +   6

              =   111010

Một ví dụ khác đổi số thập lục phân 4BE16 thành số thập phân tương đương

4BE16    =  4×162   +   11×161   +   14×160

             =  1024    +   176       +    14

             =   121410

Chú ý, trong ví dụ thứ 2 thay 11 vào B và 14 vào E khi đổi sang thập phân.

Theo cách chuyển đổi như 2 ví dụ trên thì ta có thể đổi bất kỳ một số thập lục phân sang thập phân tương đương.

2.8.ĐỔI TỪ THẬP PHÂN SANG THẬP LỤC PHÂN

Tương tự như cách đổi từ thập phân sang nhị phân hay bát thân, khi đổi từ thập phân sang thập lục phân ta cũng dùng cách lặp lại phép chia cho 16 và lấy số dư  như  trước.

Ví dụ 15: đổi số 76510 thành số thập lục phân.

Ta thực hiện phép chia, ta được:

 

Mã gray là gì

Ví dụ 16: Đổi 72410 thành số thập lục phân

Mã gray là gì

Chúng ta nên nhớ rằng bất kỳ một số dư nào trong phép chia lớn hơn 9 đều được biểu diễn bởi các chữ từ A đến F khi đổi sang số thập lục phân.

2.9.ĐỔI TỪ THẬP LỤC PHÂN SANG NHỊ PHÂN

Cách đổi từ số thập lục phân sang số nhị phân cũng giống như đổi từ bát phân sang nhị phân, nghĩa là mỗi ký số thập lục phân được đổi sang giá trị nhị phân 4 bit tương đương.

Ví dụ 17: Đổi số 8D216

 

Mã gray là gì

2.10.ĐỔI TỪ NHỊ PHÂN SANG THẬP LỤC PHÂN

Để đổi từ số nhị phân sang thập lục phân ta làm ngược lại cách đổi từ thập lục phân sang nhị phân. Nghĩa là ta nhóm thành từng nhóm 4 bit, mỗi nhóm được đổi sang ký số thập lục phân tương đương. Số 0 có thể được thêm vào để hoàn chỉnh 4 bit cuối cùng.

Ví dụ 18 : Đổi số 110011011012 thành số thập lục phân

Mã gray là gì

Ví dụ 19 : Đổi số 10101001112 thành số thập lục phân

Mã gray là gì

TÓM TẮT CÁC PHÉP CHUYỂN ĐỔI GIỮA CÁC HỆ THỐNG SỐ:

  • Khi thực hiện phép biến đổi từ hệ nhị phân (hoặc bát phân hay thập lục phân), ta lấy tổng trọng số của từng vị trí ký số.
  • Khi đổi từ hệ thập phân sang hệ nhị phân (bát phân hay thập lục phân), ta áp dụng phương pháp lặp lại phép chia cho 2 (8 hay 16) và kết hợp các số dư.
  • Khi đổi từ số nhị phân sang bát phân (hay thập lục phân), ta nhóm các bit thành từng nhóm 3 (hoặc 4) bit và đổi từng nhóm này sang ký số bát phân (hay thập lục phân) tương đương.
  • Khi đổi từ số bát phân (hay thập lục phân) sang nhị phân, ta đổi mỗi ký tự thành số nhị phân 3 (hoặc 4) bit tương đương.
  • Khi đổi từ số bát phân sang thập lục phân (hay ngược lại), ta đổi sang nhị phân trước, sau đó đổi sang hệ thống số mong muốn.

III.TÍNH TOÁN VỚI HỆ THỐNG SỐ

3.1.CỘNG SỐ HEX (THẬP LỤC PHÂN)

Phép cộng số hex được thực hiện giống như cộng thập phân. Sau đây là cách thức để cộng số hex:

Cộng hai ký số hex trong hệ thập phân, tính nhẫm giá trị thập phân tương đương cho những ký số lớn hơn 9

Nếu tổng nhỏ hơn hoặc bằng 15, có thể biểu diễn trực tiếp ở dạng ký số hex

Nếu tổng lớn hơn hoặc bằng 16, trừ 16 và nhớ 1 đến vị trí ký số kế tiếp.

Sau đây là một số ví dụ cộng các số hex minh họa

Mã gray là gì

Ở ví dụ 1 ta cộng các LSD (7 và 4) cho ra 11, là B ở hệ hex. Không có số nhớ, cộng 5 và 3 cho ra 8.

Ở ví dụ 2 ta bắt đầu cộng 8 và A, tính nhẫm A ra giá trị thập phân là 10 . Do đó tổng là 18, số này lớn hơn 16 nên ta trừ cho 16 được 2, viết số 2 và nhớ 1 sang vị trí kế tiếp. Cộng số nhớ cho 4 và 3 ta được tổng là 8.

Ở ví dụ 3 tổng của C và D xem như 12 + 13 = 2510, số này lớn hơn 16 nên ta trừ cho 16 còn 9, và nhớ 1 sang vị trí kế tiếp. Cộng số nhớ này với B và 3 ta được 1510 đổi sang số hex là F , nhớ 1 sang vị trí kế tiếp. Cộng số nhớ này với 4 và 4 ta được 9, và kết quả cuối cùng là 9F9.

3.2.CỘNG NHỊ PHÂN

Phép cộng hai số nhị phân được tiến hành giống như cộng số thập phân. Các bước của phép cộng nhị phân được áp dụng cho số nhị phân. Tuy nhiên, chỉ có bốn trường hợp có thể xảy ra trong phép cộng hai số nhị phân (bit) tại vị trí bất kỳ. Đó là:

Mã gray là gì

Dưới đây là một vài ví dụ về cộng hai số nhị phân (số thập phân tương đương trong dấu ngoặc):

Mã gray là gì

Phép cộng là phép toán số học quan trọng nhất trong hệ thống kỹ thuật số. Như ta sẽ thấy, các phép trừ, nhân và chia được thực hiện ở hầu hết máy vi tính và máy tính bấm tay hiện đại nhất thực ra chỉ dùng phép cộng làm phép toán cơ bản của chúng.

3.3.TRỪ NHỊ PHÂN

Trong phép trừ nếu số trừ nhỏ hơn số trừ, cụ thể là khi 0 trừ 1, thì phải mượn 1 ở hàng cao kế và là 2 ở ở hàng đang trừ và số mượn này phải trả lại cho hàng cao kế tương tự như phép trừ của hai số thập phân.

Ví dụ 1: trường hợp trừ hai số nhị phân 1 bit

Mã gray là gì

Ví dụ 2: Trừ hai số nhị phân nhiều bit

Mã gray là gì

4.4 BIỂU DIỄN CÁC SỐ CÓ DẤU

Do đa số máy tính xử lý cả số âm lẫn số dương nên cần có dấu hiệu nào đó để biểu thị dấu của số ( + hay – ). Thường thì người ta thêm vào một bit phụ gọi là bit dấu. Thông thường  chấp nhận bit 0 là bit dấu biểu thị số dương, bit 1 là bit dấu biểu thị số âm.

Dạng bù 1

Để có bù 1 của số nhị phân, ta thay mỗi bit 0 thành bit 1 và mỗi bit 1 thành bit 0. Nói cách khác, ta thay đỗi mỗi bit trong số nhị phân đã cho thành bit bù (đảo) tương ứng.

Ví dụ :

Mã gray là gì

Dạng bù 2

Bù 2 của một số nhị phân được hình thành bằng cách lấy bù 1 của số và cộng 1 vào vị trí nhỏ nhất.

Ví dụ 3: Tìm  dạng bù 2 của số 1101012 = 5310

Mã gray là gì

Ví dụ 4:

Mã gray là gì

Biểu diễn số có dấu bằng bù 2

Bù 2 biểu diễn những số có dấu theo cách sau đây:

Nếu là số dương, thì trị tuyệt đối được biểu diễn theo dạng nhị phân thực sự của nó, và bit dấu là 0 được đặt vào trước MSB.

Nếu là số âm, trị tuyệt đối được biểu diễn ở dạng bù 2, và bit dấu là 1 được đặt trước MSB.

Ví dụ minh họa:

Mã gray là gì

Các phép tính trong bù 2 tương tự như phép tính số nhị phân bình thường.

4.5.NHÂN NHỊ PHÂN

Phép nhân số nhị phân được thực hiện tương tự như nhân số thập phân. Quá trình thật ra đơn giản hơn vì ký số của số nhân chỉ là 0 và 1, vì vậy ta chỉ nhân cho 0 hay 1.

 Ví dụ:

Mã gray là gì

4.6.CHIA SỐ NHỊ PHÂN

Phép chia một số nhị phân (số bị chia) cho một số khác (số chia) được thực hiện giống như phép chia số thập phân. Tiến trình thức tế còn đơn giản hơn do khi kiểm tra xem có bao nhiêu lần số chia “ đi vào” số bị chia, chỉ có hai khả năng đó là 0 và 1. Quá trình chia được minh họa bằng ví dụ sau:

Mã gray là gì

Trong ví dụ đầu tiên ta có 10012 chia cho 112, tương đương 910 chia cho 310

Thương số là 00112 = 310. Trong ví dụ thứ 2, 10102 chia cho 1002 tức là 1010 chia cho 410 kết quả là 0010.12= 2.510

Phép chia số có dấu được thực hiện như phép nhân. Số âm được biến thành số dương bằng phép bù, sau đó mới thực hiện phép chia. Nếu số bị chia và số chia có dấu ngược nhau, thương số đổi sang số âm bằng cách lấy bù 2 nó và gán bit dấu là 1. Nếu số bị chia và số chia cùng dấu, thương số sẽ là số dương và được gán bit dấu là 0.