หน้านี้แปลจากต้นฉบับโดยใช้ Google translator IEEE 754 - เลขคณิตเลขฐานสองแบบมาตรฐานผู้แต่ง: Yashkardin Vladimirnbsp nbsp softelectro. ru nbsp nbsp 2009-2011 nbsp nbsp nbsp nbsp nbsp infosoftelectro. ru 1. ชื่อเรื่องมาตรฐาน มาตรฐานนี้ได้รับการออกแบบมาโดยสมาคม IEEE (Institute of Electrical and Electronics Engineers) และใช้แทนตัวเลขจริง (floating point) ในโค้ดไบนารี มาตรฐานที่ใช้กันมากที่สุดสำหรับจุดลอยโดยใช้ไมโครโปรเซสเซอร์และอุปกรณ์ตรรกะและซอฟต์แวร์จำนวนมาก ชื่อเต็มของมาตรฐานในสมาคม IEEE: มาตรฐาน IEEE สำหรับเลขทศนิยมแบบลอยตัว (ANSIIEEE Std 754-1985) ชื่อมาตรฐานของคณะกรรมาธิการด้านวิศวกรรมไฟฟ้าระหว่างประเทศ IEC 60559: 1989, เลขคณิตลอยตัวแบบไบนารีสำหรับระบบไมโครโปรเซสเซอร์ (IEC) 559: 1989 - การกำหนดมาตรฐานเก่า) ในปี 2008 สมาคมได้เปิดตัว IEEE มาตรฐาน IEEE 754-2008 ซึ่งรวมถึงมาตรฐาน IEEE 754-1985 2. คำอธิบายโดยสังเขปของมาตรฐาน ฉบับมาตรฐาน: มาตรฐาน IEEE สําหรับเลขทศนิยมแบบลอยตัวเลขฐานสองขอมูลลิขสิทธิ์ พ. ศ. 2528 โดยสถาบันวิศวกรไฟฟาและอิเล็กทรอนิกส 345 ถนน 47th East 47th New York, NY 10017, USA มาตรฐานมี 23 หน้าของข้อความใน 7 ส่วนและภาคผนวก 1: 1.Scope 1.1 วัตถุประสงค์การดำเนินการ 1.2 การรวม 1.3 ข้อยกเว้น 2. คำจำกัดความ 3.Formats 3.1 ชุดค่านิยม 3.2 รูปแบบพื้นฐาน 3.3 รูปแบบที่ขยาย 3.4 การรวมรูปแบบ 4.Rounding () 4.1 รอบ ใกล้เคียง 4.2 การปัดเศษของการปัดเศษ 4.3 ความแม่นยำในการปัดเศษ 5. การดำเนินงาน 5.1 เลขคณิต 5.2 ฐานสแควร์ 5.3 การแปลงรูปแบบจุดลอยตัว 5.4 การแปลงระหว่างรูปแบบทศนิยมและรูปแบบจำนวนเต็ม 5.5 จำนวนจุดลอยตัววนไปเป็นค่าจำนวนเต็ม 5.6 การแปลงเลขฐานสิบฐาน 5.7 การเปรียบเทียบ 6.Infinity, NaN และ Signed Zero 6.1 เลขคณิตอนันต์ 6.2 การดำเนินการกับ NaN 6.3 Bit ลงนาม 7. ข้อยกเว้น 7.1 การดำเนินการที่ไม่ถูกต้อง 7.2 ส่วนโดยศูนย์ 7.3 ล้น 7.4 Unde rflow 7.5 Inexact 8.Traps 8.1 Trap Handler 8.2 Precedence A. Reciteded Functions และ Predicates nbsp nbsp nbsp nbsp nbucky nbsp น่าแปลกที่ IEEE ได้พัฒนาจากองค์กรด้านวิศวกรรมสาธารณะระหว่างประเทศ (ซึ่งเดิมเป็นองค์การการค้า) องค์กรนี้เป็นเจ้าของลิขสิทธิ์ในการเผยแพร่มาตรฐาน IEEE754-1985 ดังนั้นถ้าคุณต้องการอ่านด้วยมาตรฐานเดิมคุณต้องซื้อประมาณ 80 อย่างไรก็ตามกฎหมายของรัสเซียอนุญาตให้ฉันแสดงความคิดเห็นเกี่ยวกับการสอนมาตรฐานนี้ ดังนั้นฉันจะนำเสนอมาตรฐานและแสดงความคิดเห็นเกี่ยวกับเรื่องนี้เพื่อวัตถุประสงค์ในการฝึกอบรม มาตรฐาน IEEE 754-1985 จะเป็นตัวกำหนด: เป็น normalised เป็น positive และ negative floating points numbers วิธีการแสดง denormalized floating point numbers เป็นบวกและลบ denormalized หมายถึงจำนวนศูนย์เป็นค่าพิเศษเพื่อแสดง infinity (Infiniti) วิธีการแสดงพิเศษ (Single-precision) 32 บิต Double-precision (double-precision) 64-bit พร้อมด้วย single (ความแม่นยำแบบ Single-extended) 43 บิต (ไม่ค่อยมีการใช้) ความแม่นยำแบบ Double-extended (ความแม่นยำแบบ double-extended) 79 บิต (โดยทั่วไปใช้ 80 บิต) 3. แนวคิดพื้นฐานในการแสดงตัวเลขทศนิยม 3.1 การส่งแบบฟอร์มเลขคณิตมาตรฐาน ตัวอย่างเช่นเลขทศนิยม 155.625 ลองนึกภาพตัวเลขในรูปแบบเลขยกกำลังมาตรฐาน: 1,55625872910 2 1,556258729exp 10 2 จำนวน 1,556258729exp 10 2 ประกอบด้วยสองส่วนคือ mantissa M 1.55625 และ exponent exp 10 2 ถ้า mantissa อยู่ในช่วง 1 -2 3.2 การส่งแบบฟอร์มเลขคณิต denormalized ตัวอย่างเช่นเลขทศนิยม 155,625 ลองนึกภาพจำนวนวิธีการชี้แจง denormalized: 0,155625872910 3 0,1556258729exp 10 3 จำนวน 0,1556258729exp 10 3 ประกอบด้วยสองส่วนคือ mantissa M 0,155625 และ exponent exp 10 3 ถ้า มินิสาอยู่ในช่วง 0.1-3 3.3 การแปลงเลขทศนิยมเป็นเลขทศนิยมแบบไบนารี ปัญหาของเราจะลดลงเป็นตัวเลขทศนิยมทศนิยมในเลขทศนิยมแบบไบนารีในรูปแบบ normalised แบบเลขลำดับ เมื่อต้องการทำเช่นนี้เราจะขยายตัวเลขที่กำหนดของตัวเลขไบนารี: 155,625 187292 7 087292 6 087292 5 187292 4 187292 3 087292 2 187292 1 187292 0 187292 -1 087292 -2 187292 -3 155,625 128 0 0 16 8 0 2 1 0.5 0 0.125 155,625 10 10011011,101 2 - จำนวนทศนิยมและเลขทศนิยมแบบลอยตัวให้เลขที่เป็นผลลัพธ์ให้กับรูปแบบปกติในระบบทศนิยมและไบนารี: 1,556258729exp 10 2 1,00110111018729exp 2 111 ด้วยเหตุนี้เราจึงมีองค์ประกอบหลักของ เลขมาตรฐานเลขฐานสอง: Mantissa M1.0011011101 Exponent exp 2 111 4. รายละเอียดการแปลงหมายเลขของ IEEE 754 4.1 การแปลงเลขมาตรฐานไบนารีเป็นมาตรฐานในรูปแบบ 32 บิต IEEE 754 แอพพลิเคชันหลักในรูปแบบเทคโนโลยีและการเขียนโปรแกรมคือ 32 และ 64 เกร็ด ตัวอย่างเช่นใน VB ใช้ชนิดข้อมูลเดี่ยว (32 บิต) และสอง (64 บิต) พิจารณาการแปลงรูปแบบเลขฐานสอง 10011011.101 แบบเดียว (32 บิต) มาตรฐาน IEEE 754 รูปแบบอื่น ๆ ของ IEEE 754 เป็นสำเนาที่มีความแม่นยำสูงขึ้น หากต้องการระบุหมายเลขในรูปแบบ IEEE 754 ที่มีความแม่นยำเพียงอย่างเดียวควรนำรูปแบบไบนารีเป็นมาตรฐาน ใน 3 เราได้ดำเนินการแปลงเป็นจำนวน 155.625 ตอนนี้พิจารณาเป็นตัวเลขไบนารี normalized ถูกแปลงเป็นรูปแบบ 32 บิต IEEE 754 คำอธิบายของการแปลงในรูปแบบ 32 บิต IEEE 754: ตัวเลขสามารถหรือ - เพราะฉะนั้นเล่นบิตเพื่อกำหนดสัญญาณของ: 0 บวก 1 ลบนี้บิตที่สำคัญที่สุดเพื่อลำดับ 32 บิต จากนั้นไปบิตเลขยกกำลังจัดสรร 1 ไบต์ (8 บิต) ผู้เข้าร่วมงานอาจเป็นหมายเลขที่มีเครื่องหมายหรือ - เมื่อต้องการกำหนดเครื่องหมายของเลขยกกำลังเพื่อไม่ให้มีเครื่องหมายบิตอื่นให้เพิ่มการชดเชยให้กับเลขยกกำลังในครึ่งไบต์ 127 (0111 1111) นั่นคือถ้าจัดแสดงของเรา 7 (111 ในฐานสอง) แล้วเปลี่ยนเลขชี้กำลัง 7 127 134 และถ้าผู้เข้าร่วมงานของเราคือ -7 จากนั้นชดเชยบูธ 127-7 120 เลขยกกำลังลำเอียงถูกเขียนขึ้นในจำนวนที่กำหนด 8 บิต อย่างไรก็ตามเมื่อเราจำเป็นต้องได้รับเลขฐานสองแบบแบบเลขเราจะลบ 127 ออกจากไบต์นี้ ส่วนที่เหลืออีก 23 บิทสำหรับมินิสะ อย่างไรก็ตามบิตนิดนท์มาตรฐาน binary mantissa มีค่าเป็น 1 เสมอเนื่องจากจำนวนอยู่ในช่วง 1 ตารางแสดงเลขทศนิยม 155.625 ในรูปแบบ 32 บิต IEEE754: 001 1011 1010 0000 0000 0000 2 971 87761,99584e292 จากด้านบน เนื่องจากตัวเลขจำนวนมากในรูปแบบ IEEE754 มีข้อผิดพลาดเกี่ยวกับความคลาดเคลื่อนเล็ก ๆ ที่มีเสถียรภาพ: จำนวนข้อผิดพลาดที่เป็นไปได้สูงสุดสำหรับจำนวนคือ Single 2 -23 100 11,920928955078125-6 ข้อผิดพลาดที่เป็นไปได้สูงสุดสำหรับจำนวน Double 2 -52 100 ข้อมูลทั่วไปเกี่ยวกับจำนวนความแม่นยำและความแม่นยำ double double 754 ตารางที่ 3. ข้อมูลเกี่ยวกับรูปแบบ 3264 บิตในมาตรฐาน ANSI IEEE Std 754-1985 จำนวนความยาวบิตชดเชยค่าเอ็กซอนเนียม (E), บิต ส่วนที่เหลือของ mantissa (M), denormalized บิตจำนวนไบนารี normalized เลขฐานสอง denormalized จำนวนทศนิยม F (-1) S 87292 (E -126) 8729 M2 23 F (-1) S 87292 (E -1022) 8729M2 52 normalized จำนวนทศนิยม F (-1) S 87292 (E-12 7) 8729 (1 M2 23) F (-1) S 87292 (E-1023) 8729 (1 ม 52 52) Abs. สูงสุด หมายเลขข้อผิดพลาด Rel สูงสุด ข้อผิดพลาด denomes จำนวน Rel สูงสุด บรรทัดฐานข้อผิดพลาด หมายเลข 2 -149 8776 1,401298468729e -45 2 -1074 8776 4,940656468729e -324 2 127 8729 (2-2 -23) 8776 3,402823478729e 38 2 1023 8729 (2-2 -52) 8776 1,797693138729e 308 8 ตัวเลขปัดเศษในมาตรฐาน IEEE 754 ในการแสดงตัวเลขทศนิยมในมาตรฐาน IEEE 754 มีตัวเลขปัดเศษเสมอ มาตรฐานมีสี่วิธีในการปัดเศษของตัวเลข วิธีปัดเศษของตัวเลขของ IEEE 754: การปัดเศษพุ่งไปที่จำนวนเต็มใกล้ที่สุด การปัดเศษมีแนวโน้มที่จะเป็นศูนย์ การปัดเศษหมายถึง 8734 การปัดเศษมีแนวโน้มที่จะ -8734 ตารางที่ 3. ตัวอย่างการปัดเศษทศนิยมเป็นทศนิยมหนึ่งจำนวนเต็มใกล้ที่สุดวิธีปัดเศษในตัวอย่างในตารางที่ 3 เมื่อคุณแปลงตัวเลขเพื่อเลือกวิธีการปัดเศษ โดยค่าเริ่มต้นนี่เป็นวิธีแรกปัดเศษเป็นจำนวนเต็มใกล้ที่สุด บ่อยครั้งในอุปกรณ์ต่างๆโดยใช้วิธีที่สอง - ปัดเศษเป็นศูนย์ เมื่อปัดเศษเป็นศูนย์ให้ยกเลิกตัวเลขระดับที่ไม่มีความหมายดังนั้นจึงเป็นวิธีที่ง่ายที่สุดในการใช้ฮาร์ดแวร์ 9. ปัญหาด้านการคำนวณที่เกิดจากการใช้มาตรฐาน IEEE754 มาตรฐาน IEEE 754 ใช้กันอย่างแพร่หลายในด้านวิศวกรรมและการเขียนโปรแกรม ไมโครโปรเซสเซอร์ที่ทันสมัยที่สุดผลิตขึ้นโดยมีการใช้ฮาร์ดแวร์ในการนำเสนอตัวแปรจริงในรูปแบบ IEEE754 ภาษาเขียนโปรแกรมและโปรแกรมเมอร์ไม่สามารถเปลี่ยนสถานการณ์นี้ได้ไม่มีการย้ายที่อยู่จริงของไมโครโพรเซสเซอร์ เมื่อสร้างมาตรฐาน IEEE754-1985 แทนของตัวแปรจริงในรูปแบบของ 4 หรือ 8 ไบต์ดูเหมือนค่าที่มีขนาดใหญ่มากเนื่องจากจำนวน RAM MS-DOS เท่ากับ 1 MB โปรแกรมในระบบนี้สามารถใช้งานได้เพียง 0.64 MB สำหรับระบบปฏิบัติการสมัยใหม่ขนาดของไบต์ 8 เป็นโมฆะอย่างไรก็ตามตัวแปรในไมโครโพรเซสเซอร์ส่วนใหญ่ยังคงอยู่ในรูปแบบ IEEE754-1985 พิจารณาการประมวลผลข้อผิดพลาดที่เกิดจากการใช้ตัวเลขในรูปแบบของ IEEE754 9.1 ข้อผิดพลาดที่เกี่ยวข้องกับความถูกต้องของการแสดงตัวเลขจริงในรูปแบบของ IEEE754 การลดอันตราย ข้อผิดพลาดนี้มีอยู่เสมอในการคำนวณด้วยคอมพิวเตอร์ เหตุผลในการเกิดเหตุการณ์ดังกล่าวได้อธิบายไว้ในย่อหน้า 7.4 -6 สำหรับคู่ 10 -14 ข้อผิดพลาดที่แท้จริงอาจมีนัยสำคัญเช่นเดียวกับ 10 31 และสำหรับคู่ 10 292 ซึ่งอาจทำให้เกิดปัญหากับการคำนวณได้ ถ้านับตัวอย่างบนกระดาษคำตอบคือ 1 ข้อผิดพลาดที่แท้จริงคือ 7. ทำไมต้องได้รับการตอบผิดหมายเลข 123456789 ในรายงานความผิดพลาดแบบเดี่ยว 4CEB79A3hex (ieee) 123456792 (dec) 4 ฉบับคือ 3 Number 123456788 ใน single 4CEB79A2hex (ieee) 123456784 (dec) การรายงานข้อผิดพลาดสัมบูรณ์ -4 ข้อผิดพลาดทางญาติในจำนวนเริ่มต้นของประมาณ 3,24 e-6 ผลให้ผลการดำเนินงานผิดพลาดหนึ่งข้อผิดพลาดของผลคือ 800 คือเพิ่มขึ้น 2,5 e 8 ครั้ง นี่คือสิ่งที่ฉันเรียกว่าเป็นการลดอันตราย คือความหายนะที่ลดลงของความถูกต้องในการดำเนินการซึ่งค่าสัมบูรณ์ของผลลัพธ์มีขนาดเล็กกว่าตัวแปรป้อนข้อมูลใด ๆ ในความเป็นจริงความผิดพลาดของความแม่นยำของการเป็นตัวแทนของที่อันตรายที่สุดในการคำนวณคอมพิวเตอร์และมักจะโปรแกรมเมอร์จำนวนมากไม่ได้ให้ความสนใจใด ๆ อย่างไรก็ตามพวกเขาสามารถทำลายมาก 9.2 ข้อผิดพลาดที่เกี่ยวข้องกับการบีบบังคับประเภทข้อมูลที่ไม่เหมาะสม ข้อผิดพลาดในป่า ข้อผิดพลาดเหล่านี้เกิดจากข้อเท็จจริงที่ว่าหมายเลขต้นฉบับที่ส่งมาในรูปแบบเดียวและสองในรูปแบบที่มักจะไม่เท่ากับกัน ตัวอย่าง: หมายเลขต้นฉบับ 123456789,123456789 Single: 4CEB79A3 123456792,0 (dec) Double: 419D6F34547E6B75 123456789,12345679104328155517578125 ความแตกต่างระหว่างจำนวน Single และ Double: 2,87654320895671844482421875 นี่คือตัวอย่างสำหรับ VB: ข้อผิดพลาดความสัมพันธ์ของผลลัพธ์คือ: 8734 (อนันต์) ข้อผิดพลาดนี้เรียกว่าศูนย์สกปรก ถ้าตัวแปรนำไปสู่ประเภทเดียวกันข้อผิดพลาดนี้จะไม่เกิดขึ้น ดังนั้นตัวแปรและผลลัพธ์ขั้นกลางของการคำนวณจะถูกนำไปยังชนิดข้อมูลเดียวกัน ตัวอย่างเช่นความต้องการของการแสดงชนิดเดียวกันที่อธิบายไว้ในภาษา C มาตรฐานเพื่อ ISO IEC 9899: 1999 ให้ความสนใจกับข้อเท็จจริงที่ว่าไม่เพียงพอที่จะนำข้อมูลต้นฉบับทั้งหมดไปใช้กับประเภทเดียว จำเป็นที่จะต้องนำผลการดำเนินงานระดับกลางมาใช้ในรูปแบบเดียวกัน นี่คือตัวอย่างของข้อผิดพลาดในผลกลาง: นี่เป็นข้อผิดพลาดเกิดขึ้นเนื่องจากผลกลางของ 1 3 ในบรรทัด c c-1 3 จะเป็นประเภท double ไม่ใช่ single เพื่อกำจัดข้อผิดพลาดคุณจะต้องให้ผลลัพธ์ขั้นกลางกับประเภทของโอเปอเรเตอร์เดี่ยวที่ใช้ Cast CSng ตัวอย่างของการนำชนิดข้อมูลสำหรับ GNU C ที่ส่งโดย Gregory Sitkarevym: ในรุ่นที่สองคุณจะเห็นว่าส่วนของค่าคงที่ในผลลัพธ์ระดับกลางจะถูกกำหนดให้กับประเภทของ float (ความแม่นยำเพียงครั้งเดียวใน C) ตัวเลือกเหล่านี้ถูกรวบรวมและดำเนินการโดยใช้ GNU C ถ้าคุณคอมไพล์และรันตัวเลือกข้างต้นจะปรากฏบน VC (Visual Studio) ผลลัพธ์จะกลับรายการ นั่นคือตัวเลือกที่ 2 จะเป็นผลลัพธ์จาก -9.934108 และตัวเลือกที่ 1 ผลลัพธ์: 0.000000 ดังนั้นจึงอาจเป็นข้อสรุปที่น่าผิดหวังได้ว่าผลของการคำนวณอาจขึ้นอยู่กับชนิดและเวอร์ชันของคอมไพเลอร์ ในกรณีนี้เราสามารถสันนิษฐานว่าคอมไพเลอร์ VC จะให้ตัวแปรประเภทต่างๆโดยอัตโนมัติและความพยายามที่จะบังคับให้ประเภทเดียวกันล้มเหลว ถ้าตัวเลือกที่ 1 (ไม่มีตัวละคร) เพื่อให้ตรงกับตัวแปร double-precision (double) แล้วข้อผิดพลาดจะไม่นำข้อมูลและผล 0.000000 ดังนั้นในกรณีส่วนใหญ่เพื่อกำจัดข้อมูล cast คือการใช้ข้อมูลประเภท double และ forget เกี่ยวกับประเภทของ single (float) ข้อผิดพลาดในการคำนวณที่เกิดจากการไม่นำข้อมูลประเภทที่ผมเรียกว่าข้อผิดพลาดของ Wild เนื่องจากเกี่ยวข้องกับความไม่รู้ของมาตรฐานและทฤษฎีการเขียนโปรแกรม (เช่นการศึกษาขั้นพื้นฐานที่ไม่ดี) 9.3 ข้อผิดพลาดที่เกิดจากการเลื่อนตัวของ mantissa หลุมกลม ข้อผิดพลาดเหล่านี้เกี่ยวข้องกับการสูญเสียความถูกต้องของผลลัพธ์ในจำนวนจุดตัด mantissas ที่ไม่สมบูรณ์บนแกนจริง ถ้าตัวเลข mantissa ไม่ตัดกันกับแกนจริงการบวกและการลบระหว่างตัวเลขเหล่านี้เป็นไปไม่ได้ ตัวอย่างเช่นเราใช้หมายเลขของ Single: 47FFFFFF 131071,9921875 (dec) ในระบบเลขฐานสองตัวเลขนี้มีลักษณะดังนี้: 11111111111111111,1111111 เราแสดงการทำงานของเครื่องคอมพิวเตอร์บางอย่างที่เพิ่มขึ้นและตัวเลขนี้เป็นรูปแบบตัวเลขเดียวที่สำคัญใน mantissa ของจำนวนไบนารีในรูปแบบของ Single ไม่เกิน 24 สีแดงหมายถึงตัวเลขที่เกินขีด จำกัด นี้และไม่เกี่ยวข้องในรูปแบบเดียว 1 นอกจากนี้มีจำนวนเดียวกัน (0.0 กะพริบข้อผิดพลาด) 2. บวกจำนวนที่มีขนาดเล็กลง 2 เท่า (การเปลี่ยนข้อผิดพลาด - 0.00390625) 3. บวกด้วยจำนวนที่น้อยกว่า 2 23 ครั้ง (การเปลี่ยนข้อผิดพลาด - 0.007812) 4 นอกจากนี้มีจำนวนน้อย 2 24 ครั้ง (เปลี่ยนข้อผิดพลาด - 0.007812) ในกรณีหลังมินิสีของตัวเลขที่แยกออกจากกันและการคำนวณทางคณิตศาสตร์กับตัวเลขเหล่านี้ไม่มีความหมาย ดังที่สามารถเห็นได้จากตัวอย่างข้างต้นข้อผิดพลาดกะจะเกิดขึ้นหากตัวเลข normalized เริ่มต้นเป็นเลขชี้กำลังที่แตกต่างกัน หากตัวเลขมีความแตกต่างกันมากกว่า 2 23 (สำหรับเดี่ยว) และ 2 52 (สำหรับคู่) การบวกและการลบระหว่างตัวเลขเหล่านี้จะไม่สามารถทำได้ ผลลัพ ธ ความผิดพลาดสูงสุดของการทํางานอยูที่ประมาณ 5,96 e-6 ซึ่งไมเกินความผิดพลาดสัมพัทธ์ในการแสดงหมายเลข (p.9.1) แม้ว่าข้อผิดพลาดของญาติที่นี่ไม่เป็นไร แต่ก็มีปัญหาอื่น ๆ ขั้นแรกให้ทำงานกับตัวเลขเฉพาะในช่วงแคบของแกนจริงซึ่งตัว Mantella ตัดกัน ประการที่สองสำหรับแหล่งที่มาของวงเงินของวงที่เรียกว่า Cyclic หลุมแต่ละ ให้ฉันอธิบายถ้ามีรอบที่มีการเพิ่มจำนวนเดิมลงในผลรวมมีวงเงินเป็นตัวเลขสำหรับจำนวนเงินนี้ นั่นคือจำนวนเงินถึงขนาดที่กำหนดจะเพิ่มขึ้นโดยเพิ่มลงในจำนวนเดิม นี่คือตัวอย่างของหลุมแบบวนรอบในระบบควบคุมอัตโนมัติ: มีโรงงานเภสัชกรรมผลิตเม็ดขนาด 10 มิลลิกรัม ประกอบด้วยเครื่องขึ้นรูป, ถังเก็บข้อมูลขนาด 500 กิโลกรัม, เครื่องบรรจุภัณฑ์, ระบบควบคุมอัตโนมัติ เครื่องปั้นป้อนลงในบังเกอร์ 10 เม็ดต่อครั้ง เครื่องบรรจุใช้เวลาหนึ่งเม็ด ระบบควบคุมอัตโนมัติคำนึงถึงเม็ดยาที่ได้รับในถังของเครื่องปั้นและนำออกจากเครื่องบรรจุหีบห่อ นั่นคือมีโปรแกรมที่แสดงการผลิตถังบรรจุในกิโลกรัม เมื่ออยู่ในบังเกอร์จะมีมากกว่า 500 กิโลกรัมเครื่องปั้นผลิตภัณฑ์ยืนพักเมื่อมีการแบ่งรหัสในบังเกอร์จะเป็น 200 กิโลกรัมของผลิตภัณฑ์ เครื่องบรรจุจะหยุดถ้าบังเกอร์มีน้ำหนักน้อยกว่า 10 ปอนด์และจะเริ่มต้นเมื่อบังเกอร์มีขนาดเกิน 100 กิโลกรัม ทั้งสองคันสามารถหยุดจากเวลาที่จะให้บริการไม่ขึ้นอยู่กับแต่ละอื่น ๆ (ขอบคุณบังเกอร์) นี่คือตัวอย่างของหลุมแบบวนรอบในระบบควบคุมอัตโนมัติ: มีโรงงานเภสัชกรรมผลิตเม็ดขนาด 10 มิลลิกรัม ประกอบด้วยเครื่องขึ้นรูป, ถังเก็บของขนาด 500 กิโลกรัม, เครื่องบรรจุภัณฑ์ตามที่คุณทราบจะทำงานได้ในวงไม่มีที่สิ้นสุด สมมติว่าเครื่องบรรจุวันหนึ่งอยู่นานเกินไปและบังเกอร์เต็มไปด้วยน้ำหนัก 300 กิโลกรัม สิ่งที่เกิดขึ้นหลังจากที่ฉันเปิดใช้งานตัวอย่างง่ายๆของการจัดการวงจรโปรแกรม: ในตัวอย่างนี้เครื่องเติมน้ำมันหยิบขึ้นมาจากถัง 100 กิโลกรัมของผลิตภัณฑ์และน้ำหนักของผลิตภัณฑ์ในถังไม่มีการเปลี่ยนแปลง ทำไมไม่เปลี่ยนเพราะมุนิซาเลข 300 และ 0.00001 disjoint format เดียว จากนั้นนำน้ำหนักของถังปั้นขึ้นเป็น 500 กิโลกรัมและหยุดลง เครื่องบรรจุจะใช้แท็บเล็ตทั้งหมดจากถังและยังหยุดทำงาน โปรแกรมจะแสดงน้ำหนัก 500 กิโลกรัมในบังเกอร์ มาทำงานผู้เชี่ยวชาญทดสอบเซ็นเซอร์สายไฟคอมพิวเตอร์และบอกว่าโปรแกรมแขวน แต่โปรแกรมไม่แขวนมันยังคงทำงานได้อย่างราบรื่นและตรวจสอบทุกคนจะยืนยันเรื่องนี้ เพียงแค่กดหมายเลข 0,0001 ในรูที่เป็นวงกลมและไม่สามารถเกิดขึ้น เป็นผลให้เราโชคดีที่เป็นโรงงานเภสัชกรรมไม่ใช่ Sayan-Shushenskaya GES ในความเป็นจริงโปรแกรมเมอร์ที่มีประสบการณ์จะไม่ทำการลบแบบวน (หรือบวก) ในลักษณะนี้ ตัวอย่างนี้เป็นจุดประสงค์ที่ไม่จริงและดังนั้นจึงไม่สามารถพิจารณาถึงแม้ว่าในแง่ของคณิตศาสตร์ทั้งหมดไม่มีที่ติ ข้อผิดพลาดนี้เป็นเรื่องปกติของ mathematicians และ programers สามเณร ฉันจะบอกว่างานหลักของโปรแกรมเมอร์คือการต่อสู้กับข้อผิดพลาด แต่ไม่อยู่ในทางคณิตศาสตร์แก้ปัญหา นี่คือตัวอย่างของการแก้ปัญหาที่ถูกต้องสำหรับปัญหานี้โดยได้รับความอนุเคราะห์จากเกรกอรี Sitkarevym: ตัวอย่างก่อนหน้านี้ถูกนำมาจากแพคเกจอุตสาหกรรมจริง เพื่อความชัดเจนเราช่วยให้ตัวอย่างข้างต้นง่ายขึ้น ดังที่เห็นได้จากตัวอย่างนี้โปรแกรมเมอร์ต้องคำนวณข้อผิดพลาดของผลการค้นหาในแต่ละรอบเพื่อให้สามารถคำนวณได้ในรอบถัดไป โปรดทราบว่าโปรแกรมเมอร์ควรจะพร้อมที่จะทำให้แนวคิดพื้นฐานบางอย่างของคณิตศาสตร์ไม่สามารถพอใจในการคำนวณในรูปแบบ IEEE754 ตัวอย่างเช่นกฎของพีชคณิต commutativity (b) a (a c) b มักจะไม่ได้ดำเนินการในการคำนวณเหล่านี้ แต่น่าเสียดายที่ในการศึกษาขั้นพื้นฐานในปัจจุบันที่ได้รับความสนใจน้อยมาก 9.4 ข้อผิดพลาดเนื่องจากการปัดเศษ สกปรกศูนย์ เมื่อการคำนวณด้วยคอมพิวเตอร์สามารถแยกแยะการปัดเศษสองแบบได้: 1. ผลการคำนวณจะถูกปัดเศษเสมอ 2. เอาต์พุตและการป้อนข้อมูลของหมายเลขจริงในกล่อง Windows จะปัดเศษ ในกรณีแรกตัวแปรจะถูกปัดเศษให้เป็นหนึ่งใน 4 รูปแบบของการปัดเศษคือ IEEE754 ปัดเศษค่าเริ่มต้นเป็นจำนวนเต็มใกล้ที่สุด ในกรณีนี้ตัวแปรจะได้รับค่าใหม่ที่ปัดเศษ ใน p.9.2 เราพิจารณาการเพิ่มของสองตัวเลขเหมือนกัน: 1 เพิ่มด้วยหมายเลขเดียวกัน (0.0 กะแสดงข้อผิดพลาด) นี่เป็นผลมาจากการเพิ่มตัวเลขสองตัวมีความถูกต้องแม่นยำ แต่ผลลัพธ์ถูกปัดเศษด้วยไมโครโปรเซสเซอร์ ดังนั้นเพื่อให้ได้ผลลัพธ์ที่แน่นอนได้ถูกเพิ่มลงในข้อผิดพลาดในการปัดเศษ โดยทั่วไปข้อผิดพลาดในการปัดเศษอยู่ในความถูกต้องของตัวเลข ในกรณีที่สองตัวแปรไม่เปลี่ยนความหมายของเพียงในหน้าต่าง Windows จะแสดงค่าที่ปัดเศษของตัวเลขจริง ปรากฎว่าตัวแปรดั้งเดิมและการแสดงผลใน Windows เป็นตัวเลขที่แตกต่างกัน นี่ไม่ใช่ข้อผิดพลาดของรูปแบบ IEEE754 นี่คือข้อผิดพลาดของ Windows ตัวแปรเดี่ยวจะปรากฏในตัวเลขสำคัญของ Windows 7 ที่ปัดเศษให้เป็นจำนวนเต็มใกล้ที่สุด 3DFCD6EA 0,12345679104328155517578125 กล่องจะปรากฏเป็น 0,1234568 สำหรับตัวแปรประเภทพิมพ์คู่กับกล่อง Windows จะแสดงตัวเลขสำคัญจำนวน 15 ตัวที่ปัดเศษเป็นตัวเลขที่ใกล้ที่สุด 3FBF9ADD3746F67D 0,12345678901234609370352046653351862914860248565673828125 แสดงเป็น 0.123456789012346 คำถามของวิธีการที่สำคัญตัวแปรเมื่อเราเข้าไปในหน้าต่าง Windows 0,123456789012346 ที่ค่านี้จะเท่ากับจำนวนนี้: 3FBF9ADD3746F676 0,1234567890123459965590058118323213420808315277099609375 นั่นคือค่าของ 3FBF9ADD3746F67D เราโดยทั่วไปไม่สามารถแทรกโดยตรงใน รหัสโปรแกรม แต่เราสามารถโกงและวางลงใน x 0.123456789012346 1 E-16 ตัวแปรที่ได้จะเท่ากับ 3FBF9ADD3746F67D (ซึ่งใช้ในตัวอย่างของสกปรกเป็นศูนย์) Display หรือ PC ผ่านหน้าต่างเป็นตัวเลขที่เป็นไปไม่ได้ อันเป็นผลมาจากการกระทำที่เกิดขึ้น Windows จำนวนสถานการณ์ที่ไม่พึงประสงค์ 1. คุณไม่มีความสามารถด้านเทคนิคในการแสดงหรือป้อนค่าที่แน่นอน ของตัวแปรในหน้าต่างซึ่งในตัวเองเป็นที่น่าเศร้ามาก 2. การเกิดข้อผิดพลาดร้ายแรงเช่นศูนย์สกปรก ศูนย์สกปรกคือเมื่อคุณหรือโปรแกรมอนุมานว่าตัวแปรไม่เท่ากับศูนย์ - ศูนย์บ่อยมากข้อผิดพลาดนี้เกิดขึ้นในส่วนติดต่อผู้ดำเนินการเครื่องจักร ตัวอย่างเช่นหลังจากการรีเซ็ตน้ำหนักของโปรแกรมบรรจุภัณฑ์ ผลของโปรแกรมในตัวอย่างข้างต้นเป็นผลให้ตัวแปรที่ผู้ประกอบการพิจารณา zero - zero ไม่เท่ากับความผิดพลาดในการเปรียบเทียบผลที่ได้คืออินฟินิตี้ ในการดำเนินการเปรียบเทียบลอจิคัลที่ไม่ใช่ศูนย์อาจส่งผลต่อการเรียกใช้โปรแกรมไปยังสาขาอื่นของอัลกอริทึม 9.5 อัตราความผิดพลาดที่หมายเลข normadenorma จำนวนนักฆ่า ข้อผิดพลาดเหล่านี้เกิดขึ้นเมื่อทำงานกับตัวเลขที่อยู่บนเส้นขอบของการแทนเลข denormalized มาตรฐาน มีความเกี่ยวข้องกับความแตกต่างในการแสดงตัวเลขในรูปแบบ IEEE754 และถ่ายโอนสูตรที่ต่างกันในรูปแบบตัวเลขจริงของ IEEE754 นั่นคืออุปกรณ์ (หรือซอฟต์แวร์) ควรใช้อัลกอริทึมที่แตกต่างกันขึ้นอยู่กับตำแหน่งของจำนวนจริงในรูปแบบบรรทัดจำนวน นอกจากนี้ยังนำไปสู่ภาวะแทรกซ้อนของอุปกรณ์และอัลกอริทึมยังคงมีความไม่แน่นอนของเขตการเปลี่ยนแปลง ความไม่แน่นอนของโซนการเปลี่ยนแปลงคือมาตรฐานไม่ได้กำหนดค่าเฉพาะของขอบเขตการถ่ายโอน ในสาระสำคัญขอบเขตการเปลี่ยนแปลงอยู่ระหว่างสองตัวเลขจริง: สุดท้าย 000FFFFFFFFFFFFF จำนวน denormalized: ค่าทศนิยมที่ถูกต้องของหมายเลขนี้: 2,2250738585072008890245868760858598876504231122409594654935248025624400092282356951787758888037591552642309780950 4343120858773871583572918219930202943792242235598198275012420417889695713117910822610439719796040004548973919380791 9893608152561311337614984204327175103362739154978273159414382813627511383860409424946494228631669542910508020181592 6642134996606517803095075913058719846423906068637102005108723282784678843631944515866135041223479014792369585208321 5976210663754016137365830441936037147783553066828345356340050740730401356029680463759185831631242245215992625464943 0083685186171942241764645513713542013221703137049658321015465406803539741790602258950302350193751977303094576317321 0852507299305089761582519159720757232455434770912461317493580281734466552734375e-308 และหมายเลขปกติแรก 0010000000000000: va ทศนิยมที่ถูกต้อง ลื้อของจำนวนนี้: 2,2250738585072013830902327173324040642192159804623318305533274168872044348139181958542831590125110205640673397310 3581100515243416155346010885601238537771882113077799353200233047961014744258363607192156504694250373420837525080665 0616658158948720491179968591639648500635908770118304874799780887753749949451580451605050915399856582470818645113537 9358049921159810857660519924333521143523901487956996095912888916029926415110634663133936634775865130293717620473256 3178148566435087212282863764204484681140761391147706280168985324411002416144742161856716615054015428508471675290190 3161322778896729707373123334086988983175067838846926092773977972858659654941091369095406136467568702398678315290680 984617210924625396728515625e-308 ตั้งแต่เขตแดนเป็นจำนวนจริง, ความแม่นยำของมันสามารถตั้งค่าให้อินฟินิตี้และอุปกรณ์ดิจิตอลหรือโปรแกรมอาจไม่ได้บิตสำหรับการตัดสินใจที่จะรวมถึงช่วงของบางอย่าง จำนวน. ตัวอย่างเช่นข้อผิดพลาด 53632 สำหรับ PHP ซึ่งก่อให้เกิดความตื่นตระหนกในช่วงต้นปี 2011 lt; lt; lt; lt; lt; lt; lt; lt; lt; lt; lt; lt; gt; ตัวเลขอื่น ๆ จากช่วงของปัญหานี้ไม่ได้เกิดขึ้น (2.2250738585072009e-308, 2.2250738585072010e-308, 2.2250738585072012e-308) รายงานข้อผิดพลาดที่ได้รับเมื่อ 30.12.2010, 10.01.2011 โดยผู้พัฒนาแก้ไข ตั้งแต่ PHP เป็น preprocessor ถูกใช้โดยเซิร์ฟเวอร์ส่วนใหญ่แล้วเครือข่ายผู้ใช้ภายใน 10 วันก็สามารถปิดโฮสต์ใด ๆ วิธีการเขียนนักพัฒนาที่ข้อบกพร่องทำงานเฉพาะในระบบ 32 บิต แต่ถ้าคุณเพิ่มความถูกต้องของเขตแดนแล้วฉันคิดว่าระบบ 64 บิตเกินไปแขวน (ไม่ได้รับการยืนยัน) เหตุผลที่ทำให้เกิดความสยดสยองชัดเจน: ผู้ใช้รายใดในระดับหนึ่งและมีความรู้ความสามารถมีโอกาสที่จะลดทรัพยากรข้อมูลส่วนใหญ่ของดาวเคราะห์ภายในสิบวัน ฉันไม่ชอบ - จะทำให้ตัวอย่างเพิ่มเติมของตัวเลขดังกล่าวและข้อผิดพลาดดังกล่าว 10 จากขั้นตอนข้างต้นเป็นที่ชัดเจนว่ามุมมองที่ว่าผลทศนิยมไม่เกินข้อผิดพลาดญาติในการรายงานจำนวนมากที่สุดคือเท็จ ข้อผิดพลาดที่กล่าวถึงในข้อ 9 จะถูกเพิ่มเข้าด้วยกัน ข้อผิดพลาดเช่นการลดศูนย์ที่สกปรกและอันตรายสามารถทำให้ข้อผิดพลาดในการคำนวณไม่สามารถยอมรับได้ ความสนใจเป็นพิเศษในการเขียนโปรแกรมการคำนวณด้วยคอมพิวเตอร์โปรแกรมเมอร์ควรได้รับผลตอบแทนใกล้เคียงกับศูนย์ ผู้เชี่ยวชาญบางคนเชื่อว่ารูปแบบของตัวเลขเป็นภัยคุกคามต่อมนุษยชาติ คุณสามารถอ่านบทความนี้ได้ในบทความ IEEE754-tick คุกคามมนุษย์แม้ว่าข้อเท็จจริงในบทความนี้จะมีเนื้อหาเกินจริงและอาจตีความผิดพลาด แต่ปัญหาก็คือการคำนวณอย่างถูกต้องตามหลักปรัชญา ฉันไม่ได้เป็นตัวเลขที่คำนวณได้จากมาตรฐาน IEEE754 ใช้งานได้ตั้งแต่ปี พ. ศ. 2528 และเข้าสู่มาตรฐาน IEEE754-2008 ซึ่งจะช่วยเพิ่มความแม่นยำในการคำนวณ อย่างไรก็ตามปัญหาการคำนวณความน่าเชื่อถือในปัจจุบันเป็นเรื่องเร่งด่วนและคำแนะนำมาตรฐาน IEEE754-2008 และ ISO ไม่สามารถแก้ไขปัญหานี้ได้ ฉันคิดว่าในพื้นที่นี้จำเป็นต้องมีแนวคิดใหม่ที่นักพัฒนาซอฟต์แวร์ IEEE754-2008 มาตรฐานไม่สามารถมีได้ ความคิดสร้างสรรค์มักมาจาก ความคิดสร้างสรรค์ที่สำคัญในโลกของเราถูกสร้างขึ้นโดยมือสมัครเล่น (คนที่มีใจเดียวกันไม่ใช่เพื่อเงิน) ตัวอย่างที่เด่นชัดของสถานการณ์นี้คือการคิดค้นโทรศัพท์ เมื่อครูโรงเรียน Alexander Graham Bell (Alexander Graham Bell) ได้รับสิทธิบัตรสำหรับการประดิษฐ์โทรศัพท์ให้กับประธาน บริษัท โทรคมนาคม Western Union ซึ่งเป็นเจ้าของโดยการต่อสายเคเบิลข้ามมหาสมุทรแอตแลนติกโดยเสนอข้อเสนอซื้อสิทธิบัตรของเขาสำหรับ การประดิษฐ์ของโทรศัพท์ที่เขาไม่ได้ถูกไล่ออก - ไม่มี ประธานของ บริษัท ดังกล่าวเสนอให้พิจารณาคำถามนี้คำแนะนำของผู้เชี่ยวชาญในด้านการโทรเลขซึ่งประกอบด้วยผู้เชี่ยวชาญและนักวิชาการด้านโทรคมนาคม ผู้เชี่ยวชาญให้ความเห็นว่าสิ่งประดิษฐ์นี้ไม่มีประโยชน์ในด้านการสื่อสารโทรคมนาคมและไร้ประโยชน์ ผู้เชี่ยวชาญบางคนได้เขียนรายงานว่า tsirkachestvo และการลอบสังหารอเล็กซานเดอร์เกรแฮมเบลล์ร่วมกับพ่อของเขาตัดสินใจอย่างเป็นอิสระเพื่อส่งเสริมการประดิษฐ์ของเขา หลังจากผ่านไปประมาณ 10 ปี บริษัท ยักษ์ใหญ่ด้านการสื่อสารโทรคมนาคมของ บริษัท เวสเทิร์นยูเนี่ยนก็ถูกตัดออกจากธุรกิจโทรศัพท์เกือบทั้งหมดจากวงการโทรคมนาคม วันนี้คุณสามารถเห็นหน้าต่างในหลายเมืองของรัสเซียที่ระบุว่า Western Union ซึ่งเป็น บริษัท ที่ดำเนินธุรกิจโอนเงินทั่วโลกและเมื่อเธอเป็นผู้ให้บริการด้านโทรคมนาคมระดับนานาชาติ ถ้าคุณคิดว่าตั้งแต่การประดิษฐ์โทรศัพท์ (1877) ในความคิดของประชาชนว่ามีอะไรเปลี่ยนแปลงไปคุณก็ผิดพลาด หากนักวิทยาศาสตร์ (ผู้ที่คิดค้นขึ้นใหม่) และผู้เชี่ยวชาญ (ผู้ที่รู้วิธีใช้ที่รู้จักกันดี) ไม่สามารถแก้ปัญหาได้คุณต้องมีนวัตกรรม ลิงก์ไปยังแนวคิดใหม่ในด้านการแสดงตัวเลขจริงในฮาร์ดแวร์: 1. Approksimetika 2. หากคุณรู้จักแนวคิดใหม่ ๆ ในด้านการเป็นตัวแทนของตัวเลขจริงเรายินดีที่จะเชื่อมโยงไปยังแหล่งข้อมูลเหล่านี้ ฉันขอแนะนำให้แสดงตัวเลขจริงเป็นจุดคงที่ เพื่อดูครบวงจรของตัวเลข Double พอที่จะมีตัวแปรประกอบด้วย 1075 บิตส่วนจำนวนเต็มและ 1075 บิตของเศษส่วนส่วนคือประมาณ 270 ไบต์ต่อตัวแปร ในกรณีนี้ตัวเลขทั้งหมดจะแสดงด้วยความถูกต้องแน่นอนเหมือนกัน คุณสามารถทำงานกับตัวเลขในช่วงทั้งแกนจริงซึ่งก็คือมันเป็นไปได้ที่จะสรุปตัวเลขขนาดเล็กจำนวนมาก ตัวเลขขั้นที่อยู่บนแกนจริงเป็นชุดเดียวกันนั่นคือแกนจริงคือเส้นตรง ประเภทข้อมูลจะเป็นเพียงประเภทเดียวเท่านั้นคือไม่จำเป็นต้องมีทั้งชนิดจริงและชนิดอื่น ๆ ที่นี่ปัญหาคือการตระหนักถึงการลงทะเบียนของขนาดไมโครโปรเซสเซอร์ของ 270 ไบต์ แต่ไม่ได้เป็นปัญหาสำหรับเทคโนโลยีที่ทันสมัย ในการเขียน p.9 ฉันต้องสร้างโปรแกรมที่แทนตัวเลขเป็นตัวแปรไปยังจุดคงที่ยาว 1075.1075 ไบต์ ในกรณีที่ตัวเลขสามารถแสดงเป็นสตริงอักขระ ASCII เช่นสัญลักษณ์หนึ่งอันมีค่าเท่ากับหนึ่งหลัก เพียงแค่ต้องเขียนการดำเนินการเลขคณิตทั้งหมดด้วยสตริง ASCII โปรแกรมนี้คล้ายกับการคำนวณกระดาษ เนื่องจากไมโครโปรเซสเซอร์ในสมรรถนะทางคณิตศาสตร์ไม่ได้ใช้งานเธอพูดช้าๆ ทำไมฉันทำฉันไม่สามารถหาโปรแกรมที่สามารถแสดงจำนวนรูปแบบ IEEE754 ได้อย่างถูกต้องในรูปแบบทศนิยม ฉันยังไม่พบโปรแกรม (แม้ว่าพวกเขาแน่นอนมีสิ่งที่ไม่ต้องสงสัย) ซึ่งคุณสามารถป้อนใน 1075 หลักทศนิยมอย่างมีนัยสำคัญ นี่คือตัวอย่างเพียงค่าทศนิยมจำนวน 7FEFFFFFFFFFFFFF คู่: 17976931348623157081452742373170435679807056752584499659891747680315726078002853876058955 863276687817154045895351438246423432132688946418276846754670353751698604991057655128207624 549009038932894407586850845513394230458323690322294816580855933212334827479782620414472316 8738177180919299881250404026184124858368,0 คุณสามารถใช้ v.1.0 nbsp IEEE754 เพื่อศึกษาและประเมินผลข้อผิดพลาดเมื่อทำงานกับตัวเลขจริงที่ได้รับในรูปแบบของ IEEE754 อ้างอิง: 1. มาตรฐาน IEEE สำหรับเลขทศนิยมแบบลอยตัวแบบไบนารี ลิขสิทธิ์ พ. ศ. 2528 โดยสถาบันวิศวกรไฟฟ้าและอิเล็กทรอนิกส์ inc 345 East 47th Street, New York, NY 10017, USA ข้อคิดเห็น: Sitkarevu Grigory (sitkarevkomitex. ru, sinclair80gmail) สำหรับความช่วยเหลือในการสร้างบทความ การจัดเก็บคำวิจารณ์ด้วยความคิดเห็น nbsp ดู nbspnbsp (ส่งข้อเสนอแนะเกี่ยวกับ e-mail: infosoftelectro. ru) วิธีการแทนค่าทศนิยม 0.148 2 ในรูปแบบ (0.148) (0.00100101111) 2 เราเปลี่ยน 3 บิตไปทางซ้าย เพื่อทำให้เป็นปกติ (1.00101111) 2 2. เลขยกกำลัง 1164 (75) (1001011) 2 และ Mantissa (01001111) 2. ดังนั้นถ้าเราเก็บ mantissa denormalized ลงในการลงทะเบียน 8 bit แล้วมันเคยชินเก็บไว้สาม 1s แล้ว mantissa จะมี normalized จาก (0.00100101) 2 (1.00101000. ) 2 โดยการใส่ 3 0s แทน 1s การแทนจะเป็น (0100101100101000) 2 (4B28) การเป็นตัวแทน B ในขณะที่ normalizing โปรเซสเซอร์จะคำนึงถึงชิ้นส่วนของ mantissa ที่มีขนาด denormalized เกินกว่า 8 บิตหรือเพียงแค่ตัดมันออกหนึ่งอันไหนถูกต้อง: A หรือ B เก็บไว้ที่ mantissa ในการชี้จุดคงที่หมายเหตุการบันทึกย่อของ Notes ทั้งหมดนี้มีข้อมูลเพิ่มเติมมากกว่าที่จำเป็นสำหรับ MGF 1107 นักเรียน MGF 1107 สามารถละเว้นทุกอย่างเกี่ยวกับเศษส่วนแบบไบนารีตัวเลขสัญกรณ์เลขฐานสองของเลขฐานสิบหกเมื่ออ่านสิ่งต่อไปนี้ เราใช้เฉพาะจำนวนเต็มไบนารีใน MGF 1107 Binary to Decimal Conversion นี่ทำโดยการใช้นิยามของค่าสถานที่สำหรับเลขฐานสองการประเมินแต่ละค่าในฐานสิบ ตัวอย่างเช่นเราแปลง 1001 สองจากไบนารีเป็นทศนิยมดังนี้: ซึ่งเป็น 9 สิบ คนส่วนใหญ่พบว่านี่เป็นสิ่งที่ง่ายที่สุดของทั้งสอง Conversion เศษส่วนจะถูกจัดการกับค่าลบสำหรับแต่ละค่าเศษเช่นเดียวกับตัวเลขทศนิยมดังนั้นเราจึงแปลง 0.11 จากฐานสองเป็นทศนิยมโดยระบุว่าให้ค่า 0.75 สิบ การบ้าน MGF 1107 ไม่รวมตัวอย่างที่มีเศษส่วนเป็นสองส่วน (การทำงานจากขวาไปซ้าย) โดยการแบ่งซ้ำโดยสอง (ซึ่งจะเปลี่ยนจุดไบนารีไปทางซ้าย) ทำให้ส่วนที่เหลือเป็นเลขฐานสองถัดไปและใช้ค่าหารจำนวนเต็มสำหรับขั้นตอนถัดไป . เราจะหยุดเมื่อความคิดเห็นเป็นศูนย์ (วิธีที่ง่ายที่สุดในการรับส่วนจำนวนเต็มคือการใช้คุณลักษณะการแปลง Hex ของเครื่องคิดเลขและแปลงเลขฐานสิบหกเป็นไบนารี แต่เราไม่ได้ใช้เครื่องคิดเลขในหน่วยนี้) ส่วนที่เป็นเศษส่วนจะได้รับ (ตอนนี้ทำงานจากซ้ายไปขวา) โดย คูณซ้ำโดยสอง (ซึ่งจะเปลี่ยนจุดไบนารีไปทางขวา) การเก็บรักษาส่วนจำนวนเต็มเป็นเลขฐานสองถัดไปและใช้ส่วนที่เป็นเศษส่วนสำหรับขั้นตอนต่อไป ไม่มีทางลัดที่ง่ายสำหรับส่วนที่เป็นเศษส่วน แต่ดูรูปแบบการทำซ้ำ ๆ เราสามารถเขียนผลเป็นเลขฐานสองจุดลอยตัวตามปกติโดยมีข้อตกลงว่า mantissa (significand) อยู่ระหว่าง 1 ถึง 2 - นั่นคือ mantissa มีรูปร่าง 1.ffffff 1. แปลง 11 ถึงสิบไบนารี: จำนวนเต็มจะถูกแปลงเป็นและเป็น 1011 สอง (นี่คือ 1.011 x 2 3 เป็นตัวเลขลอยตัว normalised) 2. แปลง 5.75 สิบเป็นไบนารี: ส่วนที่เป็นจำนวนเต็มจะถูกพบโดยและเป็น 101 สอง ส่วนที่เป็นเศษส่วนจะถูกพบตามจำนวนที่กำหนดไว้คือ 101.11 สอง (นี่เป็น 1.0111 x 2 2 เป็นหมายเลขลอยตัวแบบปกติ) 3. แปลง 0.1 ถึงสิบไบนารี: ส่วนที่เป็นเศษส่วนจะพบได้โดยตัวเลขดังกล่าวคือ 0.0001100110011 สอง (นี่คือ 1.10011001 x 2 -4 เป็นตัวเลขทศนิยมลอยตัว) Hexadecimal Numimal - เลขฐานสิบหก - Hexadecimal - Binary Table ย้อนกลับไปในปี 1950 ILLIAC ถูกสร้างขึ้นที่ University of Illinois (Urbana-Champaign) โดยใช้เลขฐานสิบหก หมายเลข อย่างไรก็ตามพวกเขานับ 8, 9, K, S, N, J, F, L แทนการใช้ 8, 9, A, B, C, D, E, F ตามที่เราทำในวันนี้ พวกเขาเลือกจดหมายเหล่านี้ (จำได้ว่าใช้ตัวช่วยในการบันทึกข้อมูล) เนื่องจากพวกเขาพิสูจน์ว่าเป็นวิธีที่สะดวกที่สุดเมื่อแปลงเครื่องพิมพ์ดีดเพื่อใช้สำหรับเจาะเทปกระดาษที่ใช้สำหรับ IO (ข้อมูลจาก J. Sutherland Frame ศาสตราจารย์กิตติคุณคณิตศาสตร์แห่งมหาวิทยาลัยมิชิแกนสเตทซึ่งเป็นโปรแกรมเมอร์ต้นปี 1957 ของ ILLIAC ที่เรียกว่า MISTIC ซึ่งทั้งสองอย่างนี้อยู่ในตระกูล ORDVAC ของคอมพิวเตอร์) (กัน: แฟน ๆ ของ 2001: Space Odyssey จะเรียกคืนคอมพิวเตอร์ HAL-9000 ที่สร้างขึ้นใน Champaign-Urbana ซึ่งสะท้อนให้เห็นถึงบทบาททางประวัติศาสตร์ของรัฐอิลลินอยส์ในการพัฒนาคอมพิวเตอร์ในช่วงต้นด้วยการสร้าง ILLIAC นอกจากนี้แม้ว่าทุกคนจะรู้จัก ว่า HAL เป็นแบบหมุนรอบ 25 ของ IBM หมายเลขซีเรียลนี้สะท้อนถึงลำดับที่ Control Data ใช้ซึ่งเป็นเครื่องซูเปอร์คอมพิวเตอร์รุ่น 6000 ในช่วงกลางยุค 60 เมื่อปี 2001 Cray-1 จะเป็นเครื่องรุ่น 8000 เครื่อง แต่ CDC ได้เลือกไว้ การออกแบบของ Star ที่นำไปสู่ Cyber-205 และ Cray ได้สร้าง บริษัท ของตัวเอง Kubrick ได้คาดเดาเกี่ยวกับการวางเครื่อง 9000 series ที่สามารถพูดได้ในต้นปี 90- ฮาลเกิดเมื่อปีพศ. 11292 แต่ก็มีคนลืมเมาส์) คือ 169 ลิขสิทธิ์ 2000 โดย James Carr
Comments
Post a Comment