ออฟเซ็ตไบนารี
เลขฐานสองแบบออฟเซ็ต [ 1 ] หรือเรียกอีกอย่างว่าexcess-K [ 1 ] excess - N , excess - e [ 2 ] [ 3 ]รหัส excessหรือการแสดงค่าแบบมีอคติเป็นวิธีการแสดงจำนวนที่มีเครื่องหมายโดยที่จำนวนที่มีเครื่องหมายnจะถูกแทนด้วยรูปแบบบิตที่สอดคล้องกับจำนวนที่ไม่มีเครื่องหมายn + Kโดย ที่ Kคือค่าอคติหรือค่าออฟเซ็ตไม่มีมาตรฐานสำหรับเลขฐานสองแบบออฟเซ็ต แต่ส่วนใหญ่แล้วKสำหรับคำเลขฐานสอง n บิต จะเป็น K = 2 n −1 (ตัวอย่างเช่น ค่าออฟเซ็ตสำหรับเลขฐานสองสี่หลักจะเป็น 2 3 =8) ซึ่งส่งผลให้ค่าลบต่ำสุดถูกแทนด้วยศูนย์ทั้งหมด ค่า "ศูนย์" ถูกแทนด้วย 1 ในบิตที่มีนัยสำคัญที่สุดและศูนย์ในบิตอื่นๆ ทั้งหมด และค่าบวกสูงสุดถูกแทนด้วย 1 ทั้งหมด (ซึ่งสะดวกคือเหมือนกับการใช้two's complementแต่บิตที่มีนัยสำคัญที่สุดกลับด้าน) ผลที่ตามมาก็คือ ในการเปรียบเทียบเชิงตรรกะจะได้ผลลัพธ์เช่นเดียวกับการเปรียบเทียบเชิงตัวเลขในรูปแบบจริง ในขณะที่ในระบบเลขสองคอมพลีเมนต์ การเปรียบเทียบเชิงตรรกะจะสอดคล้องกับการเปรียบเทียบเชิงตัวเลขในรูปแบบจริงก็ต่อเมื่อตัวเลขที่เปรียบเทียบมีเครื่องหมายเดียวกันเท่านั้น มิฉะนั้น ความหมายของการเปรียบเทียบจะกลับด้าน โดยค่าลบทั้งหมดจะถูกถือว่ามากกว่าค่าบวกทั้งหมด
รหัส Baudot 5 บิต ที่ใช้ในโทรเลขมัลติเพล็กซ์แบบซิงโครนัสในยุคแรก สามารถมองได้ว่าเป็นรหัสไบนารี สะท้อน (เกรย์)ที่ มี ค่าชดเชย 1 ( excess-1 )
ตัวอย่างที่โดดเด่นทางประวัติศาสตร์ของการใช้สัญกรณ์ออฟเซ็ต-64 ( excess-64 ) คือสัญ กรณ์ จุดลอยตัว (เลขชี้กำลัง) ในคอมพิวเตอร์รุ่น IBM System/360 และ System/370 โดย "ลักษณะเฉพาะ" (เลขชี้กำลัง) จะอยู่ในรูปแบบของตัวเลข excess-64 เจ็ดบิต (บิตลำดับสูงของไบต์เดียวกันจะมีเครื่องหมายของตัวเลขสำคัญ ) [ 4 ]
เลขชี้กำลัง 8 บิตในรูปแบบไบนารีของ Microsoftซึ่งเป็นรูปแบบเลขทศนิยมที่ใช้ในภาษาโปรแกรมต่างๆ (โดยเฉพาะBASIC ) ในช่วงทศวรรษ 1970 และ 1980 นั้น ถูกเข้ารหัสโดยใช้สัญกรณ์ออฟเซ็ต-129 ( excess-129 )
มาตรฐานIEEE สำหรับเลขคณิตจุดลอยตัว (IEEE 754)ใช้สัญกรณ์ออฟเซ็ตสำหรับส่วนเลขชี้กำลังในแต่ละรูปแบบความแม่นยำต่างๆอย่างไรก็ตาม ที่ผิดปกติคือ แทนที่จะใช้ "excess 2 n −1 " กลับใช้ "excess 2 n −1 − 1" (เช่นexcess-15 , excess-127 , excess-1023 , excess-16383 ) ซึ่งหมายความว่า การกลับบิตนำหน้า (บิตลำดับสูง) ของเลขชี้กำลังจะไม่แปลงเลขชี้กำลังให้เป็นสัญกรณ์สองคอมพลีเมนต์ที่ถูกต้อง
เลขฐานสองแบบออฟเซ็ตมักใช้ในการประมวลผลสัญญาณดิจิทัล (DSP) ชิปแปลงสัญญาณ อนาล็อกเป็นดิจิทัล (A/D) และดิจิทัลเป็นอนาล็อก (D/A) ส่วนใหญ่เป็นแบบขั้วเดียว ซึ่งหมายความว่าไม่สามารถจัดการกับสัญญาณแบบสองขั้ว (สัญญาณที่มีทั้งค่าบวกและค่าลบ) วิธีแก้ปัญหาง่ายๆ คือการไบแอสสัญญาณอนาล็อกด้วยค่าออฟเซ็ต DC ที่เท่ากับครึ่งหนึ่งของช่วงของตัวแปลง A/D และ D/A ข้อมูลดิจิทัลที่ได้จึงอยู่ในรูปแบบเลขฐานสองแบบออฟเซ็ต[ 5 ]
ชิป CPU มาตรฐานส่วนใหญ่ไม่สามารถจัดการกับรูปแบบเลขฐานสองแบบออฟเซ็ตได้โดยตรง โดยทั่วไปแล้วชิป CPU สามารถจัดการได้เฉพาะจำนวนเต็มแบบมีเครื่องหมายและไม่มีเครื่องหมาย รวมถึงค่าทศนิยมเท่านั้น ชิป CPU เหล่านี้สามารถจัดการกับค่าเลขฐานสองแบบออฟเซ็ตได้หลายวิธี อาจจะถือว่าข้อมูลนั้นเป็นจำนวนเต็มแบบไม่มีเครื่องหมาย ซึ่งทำให้โปรแกรมเมอร์ต้องจัดการกับค่าออฟเซ็ตศูนย์ในซอฟต์แวร์ หรืออาจจะแปลงข้อมูลเป็นรูปแบบจำนวนเต็มแบบมีเครื่องหมาย (ซึ่ง CPU สามารถจัดการได้โดยตรง) โดยการลบค่าออฟเซ็ตศูนย์ออก เนื่องจากค่าออฟเซ็ตที่พบบ่อยที่สุดสำหรับ คำ nบิต คือ 2n − 1ซึ่งหมายความว่าบิตแรกจะกลับด้านเมื่อเทียบกับส่วนเติมเต็มสอง จึงไม่จำเป็นต้องมีขั้นตอนการลบแยกต่างหาก แต่สามารถกลับด้านบิตแรกได้เลย บางครั้งวิธีนี้เป็นการลดความซับซ้อนที่มีประโยชน์ในฮาร์ดแวร์ และสะดวกในซอฟต์แวร์เช่นกัน
ตารางค่าชดเชยไบนารีสำหรับสี่บิต พร้อมส่วนเติมเต็มสองสำหรับการเปรียบเทียบ: [ 6 ]
| ทศนิยม | เลขฐานสองแบบออฟเซ็ต, K = 8 | ส่วนเติมเต็มของสอง |
|---|---|---|
| 7 | 1111 | 0111 |
| 6 | 1110 | 0110 |
| 5 | 1101 | 0101 |
| 4 | 1100 | 0100 |
| 3 | 1011 | 0011 |
| 2 | 1010 | 0010 |
| 1 | 1001 | 0001 |
| 0 | 1000 | 0000 |
| −1 | 0111 | 1111 |
| −2 | 0110 | 1110 |
| −3 | 0101 | 1101 |
| −4 | 0100 | 1100 |
| −5 | 0011 | 1011 |
| −6 | 0010 | 1010 |
| −7 | 0001 | 1001 |
| −8 | 0000 | 1000 |
ค่าออฟเซ็ตไบนารีสามารถแปลงเป็นทูส์คอมพลีเมนต์ได้โดยการกลับค่าบิตที่มีค่ามากที่สุด ตัวอย่างเช่น สำหรับค่า 8 บิต ค่าออฟเซ็ตไบนารีสามารถนำไป XOR กับ 0x80 เพื่อแปลงเป็นทูส์คอมพลีเมนต์ได้ ในฮาร์ดแวร์เฉพาะทาง อาจจะง่ายกว่าที่จะยอมรับบิตตามที่เป็นอยู่ แต่ใช้ค่าโดยกลับค่าความสำคัญ
รหัสที่เกี่ยวข้อง
| รหัส | พิมพ์ | พารามิเตอร์ | น้ำหนัก | ระยะทาง | กำลังตรวจสอบ | คอมพลีเมนต์ | กลุ่มละ 5 คน | การบวกแบบง่าย | ||
|---|---|---|---|---|---|---|---|---|---|---|
| ค่าชดเชย, k | ความกว้าง, n | แฟกเตอร์, q | ||||||||
| รหัส 8421 | n [ 8 ] | 0 | 4 | 1 | 8 4 2 1 | 1–4 | เลขที่ | เลขที่ | เลขที่ | เลขที่ |
| รหัสNuding [ 8 ] [ 9 ] | 3 n + 2 [ 8 ] | 2 | 5 | 3 | ไม่มีข้อมูล | 2–5 | ใช่ | 9 | ใช่ | ใช่ |
| รหัส Stibitz [ 10 ] | n + 3 [ 8 ] | 3 | 4 | 1 | 8 4 −2 −1 | 1–4 | เลขที่ | 9 | ใช่ | ใช่ |
| รหัสเพชร[ 8 ] [ 11 ] | 27 n + 6 [ 8 ] [ 12 ] [ 13 ] | 6 | 8 | 27 | ไม่มีข้อมูล | 3–8 | ใช่ | 9 | ใช่ | ใช่ |
| 25 n + 15 [ 12 ] [ 13 ] | 15 | 8 | 25 | ไม่มีข้อมูล | 3+ | ใช่ | ใช่ | ? | ใช่ | |
| 23 n + 24 [ 12 ] [ 13 ] | 24 | 8 | 23 | ไม่มีข้อมูล | 3+ | ใช่ | ใช่ | ? | ใช่ | |
| 19 n + 42 [ 12 ] [ 13 ] | 42 | 8 | 19 | ไม่มีข้อมูล | 3–8 | ใช่ | 9 | ใช่ | ใช่ | |
|
|
|
|
|
|
ดูเพิ่มเติม
อ่านเพิ่มเติม
- Gosling, John B. (1980). "6.8.5 การนำเสนอเลขยกกำลัง". ใน Sumner, Frank H. (บรรณาธิการ). การออกแบบหน่วยคำนวณสำหรับคอมพิวเตอร์ดิจิทัล . ชุดวิทยาศาสตร์คอมพิวเตอร์ของ Macmillan ( ฉบับที่ 1). ภาควิชาวิทยาการคอมพิวเตอร์มหาวิทยาลัยแมนเชสเตอร์ , แมนเชสเตอร์, สหราชอาณาจักร: สำนักพิมพ์ The Macmillan Press Ltd.หน้า 91, 137. ISBN 0-333-26397-9[
…] เราใช้ค่าเลขชี้กำลังซึ่งเลื่อนไปครึ่งหนึ่งของช่วงเลขฐานสองของตัวเลข […] รูปแบบพิเศษนี้บางครั้งเรียกว่าเลขชี้กำลังแบบมีอคติเนื่องจากเป็นค่าปกติบวกกับค่าคงที่ ผู้เขียนบางคนเรียกว่าลักษณะเฉพาะ แต่ไม่ควรใช้คำนี้ เนื่องจากCDCและหน่วยงานอื่น ๆ ใช้คำนี้สำหรับแมนทิสซานอกจากนี้ยังเรียกว่าการแสดงแบบ 'ส่วนเกิน' โดยที่ - คือ 64 สำหรับเลขชี้กำลัง 7 บิต (2⁷ − 1 = 64) […]
- Savard, John JG (2018) [2006]. "การแสดงเลขฐานสิบ" . quadibloc . เก็บถาวรจากต้นฉบับเมื่อ 2018-07-16 . เรียกดูเมื่อ2018-07-16 .(หมายเหตุ: กล่าวถึง Excess-3, Excess-6, Excess-11, Excess-123)
- Savard, John JG (2018) [2007]. "การเข้ารหัส Chen-Ho และเลขฐานสิบแบบหนาแน่น" quadibloc เก็บถาวรจากต้นฉบับเมื่อ 2018-07-03 สืบค้นเมื่อ2018-07-16(หมายเหตุ: กล่าวถึง Excess-25 และ Excess-250)
- Savard, John JG (2018) [2005]. "รูปแบบจุดลอยตัว" . quadibloc . เก็บถาวรจากต้นฉบับเมื่อ 2018-07-03 . เรียกดูเมื่อ2018-07-16 .(หมายเหตุ: กล่าวถึง Excess-32, Excess-64, Excess-128, Excess-256, Excess-976, Excess-1023, Excess-1024, Excess-2048, Excess-16384)
- Savard, John JG (2018) [2005]. "การคำนวณทางคณิตศาสตร์ด้วยคอมพิวเตอร์" . quadibloc . เก็บถาวรจากต้นฉบับเมื่อ 2018-07-16 . สืบค้นเมื่อ 2018-07-16 .(หมายเหตุ: กล่าวถึง Excess-64, Excess-500, Excess-512, Excess-1024)