Sunday 2 July 2017

ลำเอียง ตัวแทน ไบนารี ตัวเลือก


หากเรามีตัวเลขตั้งแต่ -8 ถึง 8 เราสามารถลบเครื่องหมายโดยการเพิ่มตัวเลข 8 หรือทั้งหมด ตัวเลขก็จะเป็น 0 ถึง 16 มันค่อนข้างจะเหมือนกับการขยับระดับ (เช่นเดียวกับการแปลงเซลเซียสเป็นเคลวิน) เพื่อให้ได้ค่าบวกเท่านั้น การแทนนี้ช่วยให้การดำเนินการกับตัวเลขที่มีความลำเอียงจะเหมือนกับสำหรับจำนวนเต็มที่ไม่ได้ระบุ แต่เป็นจริงทั้งค่าบวกและค่าลบ วิธีนี้เรียกชื่อหลายชื่อ - ส่วนเกิน K เรียกอีกอย่างว่า offset binary หรือ biased representation ใช้ค่าคงที่ K เป็นค่า biasing ค่าที่แสดงด้วยหมายเลขที่ไม่ได้ลงนามซึ่งเป็น K มากกว่าค่าที่ตั้งใจไว้ ดังนั้น 0 จะแสดงด้วย K และ minusK จะแสดงด้วยรูปแบบบิต zeros ทั้งหมด นี้สามารถมองเห็นเป็นการปรับเปลี่ยนเล็กน้อยของ twos - complement ซึ่งเป็นส่วนที่เกิน 2Nminus1 แทนด้วยบิตที่มีนัยสำคัญมากที่สุดที่ถูกลบล้าง ตอนนี้ใช้การแทนแบบลำเอียงเพื่อใช้เป็นเลขชี้กำลังของตัวเลขทศนิยม มาตรฐานจุดลอยตัวของ IEEE กำหนดเขตข้อมูลเลขชูญของหมายเลขเดียวที่มีความแม่นยำ (32 บิต) เป็นฟิลด์ 127 ส่วนเกิน -8 บิต ตัวอย่างที่ 1: ให้ 4 บิตค่าอคติโดย 2 3 (8) TRUE VALUE จะแสดง 3 เพิ่มค่าอคติ 3 8 11 ค่าที่ไม่ได้ลงชื่อ 11 ดังนั้น 3 ในการแสดงผล 8-bit แบบ 8 บิตจะเป็น 1011 ตัวอย่างที่ 2: ได้รับการแทน biased-8 เป็น 0110 คืออะไรค่าที่แท้จริง unsigned 0110 แสดงถึงทศนิยม 6 ลบออกอคติ 6 - 8 -2 TRUE VALUE แทน -2Signed Int: Notation BiasExcess ในส่วนเกินสัญกรณ์คุณระบุพารามิเตอร์สองตัว ได้แก่ จำนวนบิต, N และค่าความลำเอียง K. ใน SM และ 1C มีพารามิเตอร์เพียงอย่างเดียวคือจำนวนบิต ยกตัวอย่างเช่นให้ K 5 (ใน 3 บิต) และคุณมีส่วนเกิน 5 แทนซึ่งกำหนดให้เป็น -5 และทำให้เท่ากับ 2 เท่ากับ 2 ในความเป็นจริงส่วนเกิน K แทนแผนที่ 0 ถึง - k และ 1 n ไป - K 2 N - 1 ถ้าคุณเลือก K 2 N - 1 เครื่องหมายบิตจะพลิกกลับโดยที่ 1 ใน MSb หมายถึงค่าบวกและ 0 หมายถึงค่าลบ ด้วยการแทนส่วนเกิน (หรืออคติ) คุณไม่สามารถทำนอกจากนี้โดยใช้ฮาร์ดแวร์ที่ไม่ได้ลงชื่อเข้าใช้ int คุณต้องมีวงจรพิเศษเพื่อดำเนินการเพิ่มเติม กราฟนี้ถือว่าส่วนเกิน K แทน จำนวนค่าฐาน 10 ถึงส่วนเกินเพิ่มส่วนที่เกินลงไปที่เลขฐานสิบ แปลงเลขฐานสิบฐานเป็น unsigned binary (UB) ส่วนเกินกว่าฐาน 10 แปลงเลขฐานสองให้เป็นฐานสิบโดยใช้การแทนไบนารีที่ไม่ได้ลงชื่อ (UB) ลบส่วนที่เกิน เห็นได้ชัดว่าการแปลงเป็นและจากการแสดงส่วนเกินคือการดำเนินการผกผันทำไม ExcessBias จึงแตกต่างกันการเป็นตัวแทนที่ลงลายลักษณ์อักษรอื่น ๆ ที่เราเห็น: SM, 1C และ 2C ทั้งหมดแบ่งค่าเชิงลบและค่าลบออกเป็นส่วน ๆ ในหลักการคุณสามารถทำเช่นนั้นกับการแสดงส่วนเกินเกินไป อย่างไรก็ตามเนื่องจากส่วนเกิน K แทนโดยใช้บิต N มีสองพารามิเตอร์ K และ N คุณสามารถเลือก K เป็นสิ่งที่คุณต้องการ คุณสามารถมีจำนวนบวกมากกว่าเชิงลบไม่ใช่ศูนย์และอื่น ๆ เนื่องจากส่วนเกิน K แทนใช้ตัวแปรสองตัว (K และ N) ฮาร์ดแวร์ใด ๆ ที่ออกแบบมาเพื่อทำเพิ่มเติมในการแทนนี้จะขึ้นอยู่กับทั้ง K และ N. โชคดีที่การเรียงลำดับค่าในการแทนส่วนเกินจะขึ้นอยู่กับ N. เช่นเดียวกับ 2C การแสดงส่วนเกินมีที่ มากที่สุดหนึ่งศูนย์ แต่ก็เป็นไปได้ที่จะเลือก K ดังนั้น theres ไม่มีศูนย์ (เลือกขนาดใหญ่เหมาะสม K) ซึ่งแตกต่างจากที่อื่น ๆ เซ็นลงนามแทนคุณสามารถเปรียบเทียบค่าในการแสดงเกินโดยใช้การเปรียบเทียบ unsigned อย่างไรก็ตามคนส่วนใหญ่ชอบที่จะทำอย่างถูกต้องในการเปรียบเทียบซึ่งเป็นเหตุผลที่ 2C เป็นที่ต้องการเกินกว่าสัญกรณ์ โน้ตส่วนเกินจะพบการใช้ในการแทนจุดลอยอย่างไรก็ตามซึ่งเป็นเหตุผลที่เราศึกษามันในการเรียนรู้ว่าตัวเลขทศนิยมเป็นตัวแทนในคอมพิวเตอร์ฉันได้เจอค่าความลำเอียงระยะที่ฉันไม่เข้าใจมาก ค่าอคติในจำนวนจุดลอยมีส่วนเกี่ยวข้องกับเชิงลบและบวกของส่วนเลขชี้กำลังของจำนวนจุดลอยตัว ค่าอคติของจำนวนจุดลอยตัวคือ 127 ซึ่งหมายความว่า 127 ถูกเพิ่มลงในส่วนเลขชี้กำลังของจำนวนจุดลอยเสมอ วิธีการทำเช่นนี้ช่วยในการตรวจสอบว่าเลขชี้กำลังเป็นลบหรือบวกหรือไม่ได้ถาม 14 พฤษภาคมที่ 15:17 b0lt ได้อธิบายแล้วว่าอคติทำงานอย่างไร ที่เดาบางทีคุณอาจต้องการรู้ว่าทำไมพวกเขาใช้การแสดงอคติที่นี่ถึงแม้ว่าคอมพิวเตอร์สมัยใหม่เกือบทุกเครื่องจะใช้องค์ประกอบหลักของ twos ในทุกหนทุกแห่ง (และแม้แต่เครื่องจักรที่ไม่ใช้ส่วนเสริมของ twos ให้ใช้ส่วนประกอบเหล่านี้หรือใช้ขนาดของเครื่องหมายไม่ลำเอียง) . หนึ่งในเป้าหมายของมาตรฐาน IEEE floating point คือคุณสามารถปฏิบัติต่อบิตของจำนวนจุดลอยตัวเป็นจำนวนเต็ม (มีการเซ็นชื่อ) ของขนาดเดียวกันและถ้าคุณเปรียบเทียบพวกเขาด้วยวิธีนั้นค่าจะเรียงลำดับตามลำดับเดียวกับ ตัวเลขลอยตัวที่พวกเขาเป็นตัวแทน ถ้าคุณใช้การแทน twos-complement สำหรับเลขชี้กำลังตัวเลขที่เป็นบวกเล็กน้อย (เช่นกับเลขยกกำลังลบ) จะมีลักษณะเป็นจำนวนเต็มขนาดใหญ่มากเนื่องจากจะตั้ง MSB ที่สองไว้ โดยการใช้การแทนอคติแทนคุณไม่ได้ทำงานในที่ - เลขยกกำลังเล็กกว่าในจำนวนจุดลอยเสมอเช่นจำนวนเต็มขนาดเล็ก FWIW นี่เป็นเหตุผลว่าทำไมจำนวนจุดลอยจะถูกจัดเรียงโดยทั่วไปด้วยเครื่องหมายแรกจากนั้นเป็นเลขชี้กำลังและสุดท้ายคือ significand ในบิตที่มีนัยสำคัญน้อยที่สุดด้วยวิธีนี้ถ้าคุณดูบิตเหล่านั้นเป็นจำนวนเต็มเลขยกกำลังจะถือว่าเป็นมากกว่า สำคัญกว่า significand ดังนั้นคุณจึงไม่ได้รับ (เช่น) 0.9 การจัดเรียงที่มีขนาดใหญ่กว่า 1.0 ตอบ 14 พฤษภาคม 10 เวลา 15:44 การเพิ่มรายละเอียดเพิ่มเติมให้กับคำตอบข้างต้น เมื่อต้องการแสดงค่า 0 อินฟินิตี้และ NaN (Not-a-Number) ในจุดลอยตัว IEEE จึงตัดสินใจใช้ค่าการเข้ารหัสพิเศษ ถ้าบิตทั้งหมดของฟิลด์เลขยกกำลังถูกตั้งค่าเป็น 0 จำนวนจุดลอยตัวคือ 0.0 หากบิตทั้งหมดของฟิลด์เลขยกกำลังถูกตั้งค่าเป็น 1 และบิตทั้งหมดของส่วนเศษจะเป็น 0 จากนั้นจำนวนจุดลอยตัวคืออินฟินิตี้ หากบิตทั้งหมดของฟิลด์เลขชั่งได้รับการตั้งค่าเป็น 1 และบิตทั้งหมดของส่วนเศษจะไม่เท่ากับ 0 จากนั้นหมายเลขจุดลอยตัวคือ NaN ดังนั้นในความแม่นยำเดียวเรามี 8 บิตเพื่อแสดงฟิลด์เลขชี้กำลังและมี 2 ค่าพิเศษดังนั้นโดยทั่วไปเรามีค่า 256-2 254 ซึ่งสามารถแสดงในเลขชี้กำลังได้ ดังนั้นเราจึงสามารถแสดงตัวแทนได้อย่างมีประสิทธิภาพตั้งแต่ -126 ถึง 127 ซึ่งก็คือค่า 254 (126 127 1) และ 1 จะถูกเพิ่มลงใน 0 สำหรับคำถามตอบ 21 เม. ย. 21 เวลา 3:14

No comments:

Post a Comment