3.1 รหัส BCD – 8421 (Binary Code Decimal)
รหัส BCD - 8421 เป็นรหัสชนิดหนึ่งในระบบเลขฐานสอง ใช้หลักการแทนค่าเลขฐานสิบ 1 หลัก (Digit) ด้วยเลขฐานสอง
4 บิต มีผลดีคือทำให้สามารถใช้สายส่งข้อมูลเพียง 4 เส้น (สำหรับ 4 บิต) เพื่อส่งข้อมูลเลขฐานสองมากๆได้ เนื่องจากรหัส
BCD - 8421 สร้างขึ้นมาเลียนแบบเลขฐาน สิบ ดังนั้นรหัส BCD - 8421 จึงมีจำนวนเท่ากับจำนวนของเลขฐานสิบ
คือ 10 รหัส ดังตารางที่ 3.1
|
Decimal
|
BCD
- 8421
|
0
|
0000
|
1
|
0001
|
2
|
0010
|
3
|
0011
|
4
|
0100
|
5
|
0101
|
6
|
0110
|
7
|
0111
|
8
|
1000
|
9
|
1001
|
ตารางที่ 3.1 รหัส BCD – 8421 เปรียบเทียบกับเลขฐานสิบ
|
จากตารางที่ 3.1 จะเห็นว่า เลขฐานสิบ 1 หลัก เขียนแทนด้วยเลขฐานสอง 4 บิต โดยที่แต่ละบิตของรหัส BCD - 8421
ได้กำหนดน้ำหนัก ไว้ต่างกัน คือ บิตทางขวามือสุดมีน้ำหนักเป็น 1 ถัดมาเป็น 2, 4 และซ้ายมือสุดเป็น 8 ตามลำดับ เราจึงเรียกรหัส
BCD แบบนี้ว่าเป็น BCD แบบ 8421 หรือ BCD - 8421 รหัส BCD - 8421 นี้นับว่าสะดวกในการอ่านมาก เพราะถ้าเลขฐานสิบ
มีหลายๆหลัก ก็จะแทนแต่ละหลักของเลขฐานสิบ ด้วยเลขฐานสองหลักละ 4 บิต ดังตารางที่ 3.2
|
Decimal
|
BCD
- 8421
|
39
|
0011 1001
|
234
|
0010 0011 0100
|
1425
|
0001 0100 0010 0101
|
ตารางที่ 3.2 การแทนเลขฐานสิบหลายๆ หลัก ด้วยรหัส BCD - 8421
|
รหัส BCD – 8421 นั้น แม้ว่าจะเขียนอยู่ในรูปเลขฐานสอง แต่ก็ไม่เหมือนกับเลขฐานสองเช่น เขียนเป็นเลขฐานสองได้เท่ากับ
1111 แต่เขียนอยู่ในรูปของรหัส BCD – 8421 ได้เป็น 0001 0101 เป็นต้น การเปรียบเทียบเลขฐานสิบ เลขฐานสอง และ
รหัส BCD – 8421 แสดงในตารางที่ 3.3
|
Decimal
|
Binary
number
|
BCD
– 8421 code
|
6
|
110
|
0110
|
18
|
10010
|
0001 1000
|
249
|
11111001
|
0010 0100 1001
|
837
|
1101000101
|
1000 0011 0111
|
1205
|
10010110101
|
0001 0010 0000 0101
|
5014
|
1001110010110
|
0101 0000 0001 0100
|
ตารางที่ 3.3 แสดงการเปรียบเทียบเลขฐานสิบ เลขฐานสอง และรหัส BCD – 8421
<< Go To Top
|
3.2 รหัส ฐานแปด(Octal) และ ฐานสิบหก (Hexadecimal)
การนำรหัส BCD – 8421 มาใช้ไม่ได้เหมาะสมในทุกโอกาส สิ่งที่เราเห็นได้ชัด คือ รหัส BCD – 8421
นั้น ไม่สามารถที่จะบวกกัน ได้ เพราะถ้าบวกกันแล้วได้ผลลัพธ์ตั้งแต่ 10 ขึ้นไป ก็จะไม่มีรหัสที่ใช้แทนได้ เช่น
7 + 8 = 15 เมื่อเขียนอยู่ในรูปของ รหัส BCD – 8421 จะได้ 0111 + 1000 = 1111 ซึ่ง 1111 ไม่มีในรหัส
BCD – 8421 หรือในกรณีของเลขหลายๆ บิต เช่นเลข 8 บิต ที่ คอมพิวเตอร์ใช้ หากจะต้องมาเปลี่ยนเป็นรหัส
BCD – 8421 ทุกครั้ง ระหว่างอุปกรณ์ภายนอกกับเครื่องคอมพิวเตอร์ ก็จะทำให้เกิดความยุ่งยาก และไม่เหมาะสม
เท่ากับเลขฐานสอง แต่เลขฐานสองก็ลำบากในการคิด ดังนั้นจึงมีวิธีการแบ่งเลขฐานสองออกเป็นกลุ่มๆ ละ 3 บิต แล้วแทน
ด้วยเลขฐานแปด (Octal) คือ 0 ถึง 7 หรือแบ่งเป็นกลุ่มละ 4 บิต แล้วแทนด้วยเลขฐานสิบหก (Hexadecimal) คือ
0 ถึง F ก็จะทำให้สะดวกในการเรียกเลขจำนวนดังกล่าว
|
3.2.1 รหัสฐานแปด (Octal Code)
การกำหนดรหัสฐานแปด ของเลขฐานสอง กระทำได้โดยการแบ่งกลุ่มๆ ละ 3 บิต ลองพิจารณาเลขฐานสอง 24 บิต ที่เก็บไว้ใน
คอมพิวเตอร์ เช่น 101011010100001111000110
สามารถแบ่งกลุ่มได้ดังนี้
101 011 010 100 001 111 000 110
5 3 2 4 1 7 0 6
จะเห็นได้ว่า เมื่อแบ่งกลุ่มของฐานสองแล้ว จะแทนเลขฐานสองของแต่ละกลุ่มด้วยเลขฐานแปด คือ 0 ถึง 7 ทำให้ง่ายในการอ่าน
หรือมีเลขฐานแปดจะเปลี่ยนเป็นเลขฐานสองก็ง่ายเช่นเดียวกัน คือ แค่เพียงแปลงเลขกลับเท่านั้น
|
3.2.2 รหัสฐานสิบหก (Hexadecimal Code)
การกำหนดรหัสฐานสิบหกของเลขฐานสอง กระทำได้โดยการแบ่งเป็นกลุ่มๆ ละ 4 บิต ตามเลขฐานสิบหก เช่น
11110010
สามารถแบ่งเป็นกลุ่มได้ดังนี้
1111 0010
F 2
ในทำนองเดียวกัน เลขฐานสิบหก ก็สามารถเปลี่ยนกลับมาเป็นเลขฐานสองได้เช่นเดียวกันโดยการแปลงกลับเท่านั้น รหัสฐานสิบหก
นิยมใช้มากในภาษาเครื่องของคอมพิวเตอร์
<< Go To Top
|
3.3 การใช้ Parity ในรหัส
ในการส่งข้อมูลโดยใช้ดิจิตอลนั้น เราสามารถตรวจสอบความถูกต้องของข้อมูลที่ส่งออกไปได้โดยวิธีที่นิยมกัน คือ ใช้ Parity bit
Parity bit คือ บิต (เลข 0 หรือ 1) ที่เติมเข้าไปใน code word ใดๆ ก็ตามแล้วทำให้ code word นั้นๆ มีจำนวนของเลข 1
เป็นคู่ (even) หรือ คี่ (odd) ก็ได้ตามต้องการ การใช้ parity ในรหัสจึงแบ่งออกเป็นสองแบบ คือ Even parity และ Odd parity
Even parity คือ parity ที่เติมเข้าไปใน code word แล้วทำให้จำนวนเลข 1 ของ code word นั้นเป็นจำนวนคู่
Odd parity คือ parity ที่เติมเข้าไปใน code word แล้วทำให้จำนวนเลข 1 ของ code word นั้นเป็นจำนวนคี่
|
Decimal |
BCD
– 8421 code |
BCD
with Odd parity |
BCD
with Even parity |
0
|
0000
|
00001
หรือ 00001
|
00000
หรือ 00000
|
1
|
0001
|
00010
หรือ 00010
|
00011
หรือ 00011
|
2
|
0010
|
00100
หรือ 00100
|
00101
หรือ 00101
|
3
|
0011
|
00111
หรือ 00111
|
00110
หรือ 00110
|
4
|
0100
|
01000
หรือ 01000
|
01001
หรือ 01001
|
5
|
0101
|
01011
หรือ 01011
|
01010
หรือ 01010
|
6
|
0110
|
01101
หรือ 01101
|
01100
หรือ 01100
|
7
|
0111
|
01110
หรือ 01110
|
01111
หรือ 01111
|
8
|
1000
|
10000
หรือ 10000
|
10001
หรือ 10001
|
9
|
1001
|
10011
หรือ 10011
|
10010
หรือ 10010
|
ตารางที่ 3.4 รหัส BCD – 8421 กับ parity
|
ตามตารางที่ 3.4 เป็นการแสดงการเติม parity bit แบบ odd และ even ของรหัส BCD – 8421 ซึ่งนอกเหนือจาก BCD code
แล้ว เรายังใช้ parity bit ในรูปของรหัสอื่นๆ อีกด้วย และมีวิธีการเช่นเดียวกันกับที่กล่าวมาแล้ว
<< Go To Top
|
3.4 รหัสเกิน 3 (Excess - 3 Code)
รหัสเกิน 3 คล้ายกับรหัส BCD – 8421 และรหัสเกิน 3 นี้เป็นรหัสชนิดหนึ่งในระบบเลขฐาน สองเช่นกัน ใช้สำหรับการคำนวณทาง
คณิตศาสตร์ (Arithmetic circuit) เนื่องจากรหัสเกิน 3 นี้ มีค่าคอมพลีเมนต์ในตัวเอง (Self - complementing) ลักษณะของรหัสเกิน 3
คือการเพิ่มค่าตัวเลขฐานสิบในหลักใดๆ โดยบวกอีก 3 เช่น เลข 4 ฐานสิบจะมีค่าเท่ากับ (0111)EX-3 นั่นคือนำเลข 4 มาบวก 3 เป็น 7 และ
แปลงเลข 7 เป็นเลขฐานสอง จะได้ 0111 ดังตารางที่ 3.5 จะเห็นว่ารหัสเกิน 3 จะมีค่ามากกว่ารหัส BCD – 8421 อยู่ 3
|
Decimal
|
BCD
– 8421 code
|
Excess
– 3 code
|
0
|
0000
|
0011
|
1
|
0001
|
0100
|
2
|
0010
|
0101
|
3
|
0011
|
0110
|
4
|
0100
|
0111
|
5
|
0101
|
1000
|
6
|
0110
|
1001
|
7
|
0111
|
1010
|
8
|
1000
|
1011
|
9
|
1001
|
1100
|
ตารางที่ 3.5 แสดงการเปรียบเทียบระหว่างรหัส BCD – 8421 กับ Excess – 3 code
|
การเข้ารหัสเลขฐานสิบ เป็น รหัสเกิน 3 หรือการถอดรหัสจากรหัสเกิน 3 เป็นเลขฐานสิบ ก็มีวิธีเช่นเดียวกันกับ การเข้ารหัสเลขฐานสิบ
เป็น รหัส BCD – 8421 หรือ การถอดรหัสจาก BCD – 8421 เป็น เลขฐานสิบ
|
ตัวอย่างที่ 3.1 จงเข้ารหัสเลขฐานสิบ ต่อไปนี้ เป็นรหัสเกิน 3
ก. 24
ข. 618
ค. 3570
วิธีทำ
Decimal
|
Excess
– 3 code
|
24
|
0101 0111
|
618
|
1001 0100 1011
|
3570
|
0110 1000 1010 0011
|
|
|
ตัวอย่างที่ 3.2 จงถอดรหัสเกิน 3 ต่อไปนี้ให้เป็นเลขฐานสิบ
ก. 0110 1100
ข. 1000 1001 1011
ค. 1010 0111 0101 0100
วิธีทำ
Excess
– 3 code
|
Decimal
|
0110 1100
|
39
|
1000 1001 101
|
568
|
10
0111 0101 0100
|
7421
|
|
<< Go To Top
|
3.5 รหัส เกรย์ (Gray Code)
รหัส เกรย์ (Gray Code) เป็นรหัสอย่างหนึ่งในระบบเลขฐานสองเช่นกัน ใช้ในการแปลง อนาลอก เป็น ดิจิตอล (Analog to Digital)
และในงานด้านการควบคุมตำแหน่งการเคลื่อนที่ของดรัมในเครื่องพิมพ์ (Drum priter) จะใช้ล้อรหัส (Code wheels) เป็นรหัสเกรย์ หรือ
รหัสไบนารี โดยล้อรหัสนี้จะถอดรหัสจาการหมุนของมอเตอร์ขับ โดยใช้การตรวจจับทางแสง (Photo detector) ดังรูปที่ 3.1 และลักษณะ
ของล้อรหัสเกรย์ ดังรูปที่ 3.2 จะเห็นว่ารหัสเกรย์มีขนาด 4 บิต บรรจุอยู่ในล้อรหัส 16 รหัส (0 - 15) ดังนั้นค่าความละเอียดในการควบคุม
ตำแหน่ง จะมีค่า = 22.5
องศา ต่อการเปลี่ยนรหัส 1 ครั้ง สำหรับการเปรียบเทียบระหว่างรหัสเกรย์และรหัส BCD – 8421 และเลขฐานสองแสดงในตารางที่ 3.6
|
รูปที่ 3.1 แสดงการติดตั้งรหัสบนเพลาของดรัม
(ก) ล้อรหัสไบนารี (ข) ล้อรหัสเกรย์
รูปที่ 3.2 แสดงการเปรียบเทียบระหว่างล้อรหัสไบนารี (ก) และล้อรหัสเกรย์ (ข)
|
Decimal
|
Binary
|
Gray
code
|
0
|
0000
|
0000
|
1
|
0001
|
0001
|
2
|
0010
|
0011
|
3
|
0011
|
0010
|
4
|
0100
|
0110
|
5
|
0101
|
0111
|
6
|
0110
|
0101
|
7
|
0111
|
0100
|
8
|
1000
|
1100
|
9
|
1001
|
1101
|
10
|
1010
|
1111
|
11
|
1011
|
1110
|
12
|
1100
|
1010
|
13
|
1101
|
1011
|
14
|
1110
|
1001
|
15
|
1111
|
1000
|
ตารางที่ 3.6 รหัสเกรย์เทียบกับเลขฐานสองและเลขฐานสิบ
|
3.5.1 การแปลงเลขฐานสองเป็นรหัสเกรย์
การแปลงเลขฐานสองเป็นรหัสเกรย์ จะเริ่มต้นจากบิตที่มีความสำคัญมากที่สุด (MSB) ซึ่งบิตนี้ รหัสเกรย์จะมีค่าเหมือน
กับเลขฐานสอง ในขั้นต่อไป นำ MSB ของเลขฐานสองบวกกับบิตถัดไป (บิตที่สองนับจาก MSB) โดยถือหลักเกณฑ์ว่า
0+0 = 0, 0+1 = 1, 1+0 = 1 และ 1+1 = 0 (ตัวทด = 1 ให้ตัดทิ้งไป) ต่อไปให้นำบิตที่สองบวกกับบิตที่สามและบิตที่สามบวก
กับบิตที่สี่ เรื่อยไป ผลบวกที่ได้แต่ละครั้งคือรหัสเกรย์ที่ต้องการ
|
ตัวอย่างที่ 3.3 จงแปลงเลขฐานสองต่อไปนี้ให้เป็นรหัสเกรย์
(ก) 1011000111101
|
(ข) 0110011100011
|
3.5.2 การแปลงรหัสเกรย์เป็นเลขฐานสอง
การแปลงรหัสเกรย์ให้เป็นเลขฐานสอง มีหลักการคล้ายๆ กับการแปลงเลขฐานสองให้เป็นรหัสเกรย์ โดยเริ่มต้นจาก MSB
เช่นเดียวกัน นั่นคือ MSB ของเลขฐานสองจะมีค่าเหมือนกับ MSB ของรหัสเกรย์ ในขั้นต่อไปให้นำ MSB ของเลขฐานสอง
บวกกับ บิตที่สอง (นับจาก MSB) ของรหัสเกรย์ (หลักเกณฑ์การบวกก็เช่นเดียวกับการแปลงเลขฐานสองให้เป็นรหัสเกรย์)
ผลบวกที่ได้คือบิตที่สองของเลขฐานสอง ต่อไปให้นำบิตที่สองของเลขฐานสองบวกกับบิตที่สามของรหัสเกรย์ผลบวก
ที่ได้คือบิตที่สามของเลขฐานสอง และบวกเช่นนี้ไปเรื่อยๆ
|
ตัวอย่างที่ 3.4 จงแปลงรหัสเกรย์ต่อไปนี้ให้เป็นเลขฐานสอง
(ก) 1110100100011
|
(ข) 0101010010010
|
3.6 รหัส แอสกี (ASCII Code)
รหัสแอสกี (ASCII Code) ใช้งานกันอย่างกว้างขวางในการส่งข้อมูลในระบบไมโครคอมพิว-เตอร์ เป็นรหัสข้อมูลขนาด 7 บิต ซึ่ง
ใช้กับคีย์บอร์ดในการป้อนข้อมูลและใช้กับเครื่องพิมพ์ แอสกี (ASCII) ย่อมาจากคำว่า American Standard Code for Information -
- Interchange อ่านออกเสียงว่า แอส – กี รหัสแอสกีมีอักขระทั้งหมด 128 ตัว ใช้แทนด้วยตัวเลขฐานสองขนาด 7 บิต แต่ในทางปฏิบัตินั้น
ใช้เลขฐานสองขนาด 8 บิต โดยกำหนดให้บิตที่ 8 (MSB) มีค่าเป็น 0 ตารางแสดงรหัสแอสกีเปรียบเทียบกันระหว่างตัวอักขระ
สัญลักษณ์แป้นพิมพ์ ชื่อคำสั่งนั้นๆ ในรหัสแอสกี แสดงในตารางที่ 3.7 เพื่อให้เข้าใจเรื่องรหัสแอสกีขอให้พิจารณาจากตัวอย่างที่ 3.5
|
ตัวอย่างที่ 3.5 จงหาค่าเลขฐานสอง เลขฐานสิบหก ที่เกิดจากรหัสแอสกีของแป้นพิมพ์คอมพิวเตอร์ เมื่อทำการพิมพ์คำสั่งในภาษาเบสิกดัง
นี้ 20 PRINT “A=”;X
วิธีทำ เมื่อแยกข้อมูลการกดแป้นพิมพ์แต่ละตัวตามลำดับ และดูจากตารางที่3.7 จะได้ค่าเลขฐานสองและฐานสิบหกของ
รหัสแอสกีแต่ละตัวดังนี้
|
ไม่มีความคิดเห็น:
แสดงความคิดเห็น