ชนิดจุดลอยตัว (เช่น Single และ Double) แสดงด้วยหน่วยความจำด้วยเครื่องหมาย mantissa และเลขชี้กำลัง คิดว่ามันเป็นสัญลักษณ์ทางวิทยาศาสตร์:
Sign*Mantissa*Base^Exponent
พวกเขา - อย่างที่คุณคาดไว้ - ใช้ฐาน 2 มี tweaks อื่น ๆ ที่อนุญาตให้ใช้แทนอินฟินิตี้และ NaN และเลขชี้กำลังเป็นออฟเซ็ต (จะกลับมาที่) และชวเลขสำหรับแมนทิสซา . มองหามาตรฐาน IEEE 754 ซึ่งครอบคลุมการแสดงและการดำเนินงานเพื่อดูรายละเอียดเพิ่มเติม
สำหรับจุดประสงค์ของเราเราสามารถจินตนาการว่ามันเป็นเลขฐานสอง "mantissa" และ "เลขชี้กำลัง" ที่บอกให้คุณทราบว่าจะวางตัวคั่นทศนิยมไว้ที่ใด
ในกรณีของ Single เรามี 1 บิตสำหรับเขาเซ็น 8 สำหรับ exponent และ 23 สำหรับ mantissa
ทีนี้ก็คือเราจะเก็บ mantissa จากตัวเลขที่สำคัญที่สุด จำไว้ว่าเลขศูนย์ทั้งหมดทางด้านซ้ายนั้นไม่เกี่ยวข้องกัน และเมื่อเราทำงานด้วยระบบเลขฐานสองเรารู้ว่าตัวเลขที่สำคัญที่สุดคือ 1 ※ เนื่องจากเรารู้ว่าเราไม่ต้องเก็บมัน ขอบคุณที่จดชวเลขช่วง mantissa ที่มีประสิทธิภาพคือ 24 บิต
※: หากจำนวนที่เราจัดเก็บนั้นเป็นศูนย์ เพื่อที่เราจะได้ตั้งค่าบิตทั้งหมดเป็นศูนย์ อย่างไรก็ตามหากเราพยายามตีความว่าภายใต้คำอธิบายที่ฉันให้คุณคุณจะมี 2 ^ 24 (นัย 1) คูณด้วย 1 (2 ถึงพลังของเลขชี้กำลัง 0) ดังนั้นในการแก้ไขศูนย์เลขชี้กำลังเป็นค่าพิเศษ นอกจากนี้ยังมีค่าพิเศษในการจัดเก็บอินฟินิตี้และ NaN ในเลขยกกำลัง
ตามการชดเชยเลขชี้กำลัง - นอกเหนือจากการหลีกเลี่ยงค่าพิเศษ - การมีออฟเซ็ตอนุญาตให้วางจุดทศนิยมก่อนเริ่มต้นของ mantissa หรือหลังสิ้นสุดโดยไม่จำเป็นต้องมีสัญลักษณ์สำหรับเลขชี้กำลัง
ซึ่งหมายความว่าสำหรับตัวเลขขนาดใหญ่ชนิดจุดลอยจะใส่จุดทศนิยมเกินกว่าจุดสิ้นสุดของ mantissa
จำไว้ว่าแมนทิสซาเป็นตัวเลข 24 บิต มันจะไม่แสดงหมายเลข 25 บิต ... มันไม่มีบิตพิเศษนั้น ดังนั้นเดี่ยวไม่สามารถแยกความแตกต่างระหว่าง 2 ^ 24 และ 2 ^ 24 + 1 (นี่คือตัวเลข 25 บิตแรกและพวกเขาแตกต่างกันในบิตสุดท้ายซึ่งไม่ได้เป็นตัวแทนในเดียว)
ดังนั้นสำหรับจำนวนเต็มช่วงของเดี่ยวคือ -2 ^ 24 ถึง 2 ^ 24 และพยายามที่จะเพิ่ม 1 ถึง 2 ^ 24 จะส่งผลให้เป็น 2 ^ 24 (เพราะเท่าที่เกี่ยวข้องกับประเภท 2 ^ 24 และ 2 ^ 24 + 1 เป็นค่าเดียวกัน) ลองมันออนไลน์ นี่คือเหตุผลที่มีการสูญเสียข้อมูลเมื่อแปลงจากจำนวนเต็มเป็นโสด และนี่ก็เป็นเหตุผลว่าทำไมการวนซ้ำที่ใช้เพียงครั้งเดียวหรือสองครั้งจึงเป็นวงไม่สิ้นสุดโดยที่คุณไม่สังเกตเห็น