รหัสเกรย์

จากวิกิพีเดีย สารานุกรมเสรี

รหัสเกรย์ (อังกฤษ: Graycode) เป็นรหัสคอมพิวเตอร์อีกชนิดหนึ่งโดยใช้เลขไบนารีขนาด 4 บิต แทนเลข 0 ถึง 9 เช่นกัน โดยเริ่มที่ 0000 แต่เป็นรหัสที่ไม่มีค่าน้ำหนัก ( Non weighted) ซึ่งหมายถึง ตำแหน่งบิตในกลุ่มรหัสจะไม่มีตัวใดบ่งบอกถึงน้ำหนักเป็นพิเศษ ดังนั้นจึงไม่เหมาะสมสำหรับใช้คำนวณ แต่จะมีประโยชน์ในระบบที่ต้องใช้อุปกรณ์ อินพุต/เอาต์พุต ใช้กันมากในระบบตรวจจับสัญญานด้วยแสง การเปลี่ยนแปลงของรหัสเกรย์ แต่ละค่าจะต่างจากจำนวนก่อนหน้าอยู่ 1 บิต เสมอ ทำให้โอกาสที่จะเกิดความผิดพลาดได้ยากเมื่อเทียบกับรหัสเลขฐานสอง ซึ่งอาจเกิดความคลาดเคลื่อนของรหัส (Erronous Code) หรือเกิดการคลุมเครือของรหัสระหว่างส่งรหัสได้

ตัวอย่างการเทียบเลข Binary กับ Gray Code

Graycode1.jpg

การแปลงเลขฐานสอง เป็น รหัสเกรย์ และ จากรหัสเกรย์ เป็นเลขฐานสอง[แก้]

สิ่งแรกที่เราต้องทราบในการแปลงเลขฐานสอง เป็น รหัสเกรย์ และ จากรหัสเกรย์ เป็นเลขฐานสอง คือ กฎการบวก โดยที่ 0+0 = 0, 0+1 = 1, 1+0 =1 และ 1+1 = 0

ขั้นตอนการแปลงเลขฐานสอง เป็น รหัสเกรย์[แก้]

  1. เริ่มจากบิตแรกซึ่งถือว่ามีนัยสำคัญมากที่สุด (MSB) ดีงมาไว้เป็นบิตแรกเช่นเดิม
  2. นำบิตแรกไปบวกกับบิตตัวที่ 2
  3. นำบิตตัวที่ 2 ไปบวกกับบิตตัวที่ 3
  4. นำบิตตัวที่ 3 ไปบวกกับบิตตัวที่ 4 ไปเรื่อยๆจนหมด ผลบวกที่เราได้ ก็คือ Gray Code เช่น
  • Binary________1110011001
  • Gray Code____ 1001010101

ขั้นตอนการแปลงจากรหัสเกรย์ เป็นเลขฐานสอง[แก้]

มีหลักคล้ายๆกับ การแปลงเลข Binary ให้เป็น Gray Code โดยเริ่มต้นจาก MSB เช่นเดียวกัน นั่นคือ

  1. MSB ของเลข Binary จะมีค่าเหมือนกับ MSB ของ Gray code
  2. นำ MSB ของเลข Binary บวกกับบิตที่ 2 (นับจาก MSB) ของ Gray code ผลบวกที่ได้คือ บิตที่ 2 ของเลข Binary
  3. นำบิตที่ 2 ของเลข Binary บวกกับบิตที่ 3 ของ Gray Code ผลบวกที่ได้คือ บิตที่ 3 ของเลข Binary
  4. บวกกันเช่นนี้ไปเรื่อยๆจนหมด เช่น
  • Gray Code____1110111010
  • Binary________1011010011