รหัสเกรย์
รหัสเกรย์ (อังกฤษ: Graycode) เป็นรหัสคอมพิวเตอร์อีกชนิดหนึ่งโดยใช้เลขไบนารีขนาด 4 บิต แทนเลข 0 ถึง 9 เช่นกัน โดยเริ่มที่ 0000 แต่เป็นรหัสที่ไม่มีค่าน้ำหนัก ( Non weighted) ซึ่งหมายถึง ตำแหน่งบิตในกลุ่มรหัสจะไม่มีตัวใดบ่งบอกถึงน้ำหนักเป็นพิเศษ ดังนั้นจึงไม่เหมาะสมสำหรับใช้คำนวณ แต่จะมีประโยชน์ในระบบที่ต้องใช้อุปกรณ์ อินพุต/เอาต์พุต ใช้กันมากในระบบตรวจจับสัญญานด้วยแสง การเปลี่ยนแปลงของรหัสเกรย์ แต่ละค่าจะต่างจากจำนวนก่อนหน้าอยู่ 1 บิต เสมอ ทำให้โอกาสที่จะเกิดความผิดพลาดได้ยากเมื่อเทียบกับรหัสเลขฐานสอง ซึ่งอาจเกิดความคลาดเคลื่อนของรหัส (Erronous Code) หรือเกิดการคลุมเครือของรหัสระหว่างส่งรหัสได้
ตัวอย่างการเทียบเลข Binary กับ Gray Code
Decimal | Binary | Gray |
---|---|---|
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 |
การแปลงเลขฐานสอง เป็น รหัสเกรย์ และ จากรหัสเกรย์ เป็นเลขฐานสอง
[แก้]สิ่งแรกที่เราต้องทราบในการแปลงเลขฐานสอง เป็น รหัสเกรย์ และ จากรหัสเกรย์ เป็นเลขฐานสอง คือ กฎการบวก โดยที่ 0+0 = 0, 0+1 = 1, 1+0 =1 และ 1+1 = 0
ขั้นตอนการแปลงเลขฐานสอง เป็น รหัสเกรย์
[แก้]- เริ่มจากบิตแรกซึ่งถือว่ามีนัยสำคัญมากที่สุด (MSB) ดีงมาไว้เป็นบิตแรกเช่นเดิม
- นำบิตแรกไปบวกกับบิตตัวที่ 2
- นำบิตตัวที่ 2 ไปบวกกับบิตตัวที่ 3
- นำบิตตัวที่ 3 ไปบวกกับบิตตัวที่ 4 ไปเรื่อยๆจนหมด ผลบวกที่เราได้ ก็คือ Gray Code เช่น
- Binary________1110011001
- Gray Code____ 1001010101
ขั้นตอนการแปลงจากรหัสเกรย์ เป็นเลขฐานสอง
[แก้]มีหลักคล้ายๆกับ การแปลงเลข Binary ให้เป็น Gray Code โดยเริ่มต้นจาก MSB เช่นเดียวกัน นั่นคือ
- MSB ของเลข Binary จะมีค่าเหมือนกับ MSB ของ Gray code
- นำ MSB ของเลข Binary บวกกับบิตที่ 2 (นับจาก MSB) ของ Gray code ผลบวกที่ได้คือ บิตที่ 2 ของเลข Binary
- นำบิตที่ 2 ของเลข Binary บวกกับบิตที่ 3 ของ Gray Code ผลบวกที่ได้คือ บิตที่ 3 ของเลข Binary
- บวกกันเช่นนี้ไปเรื่อยๆจนหมด เช่น
- Gray Code_____1110111010
- Binary________1011010011