Thursday 27 July 2017

ลอย จุด mantissa ตัวแทน ไบนารี ตัวเลือก


Floating Point Representation Basics มีบทความเกี่ยวกับการเป็นตัวแทนของรูปแบบจุดลอยตัววัตถุประสงค์ของบทความนี้คือการให้คำแนะนำโดยย่อเกี่ยวกับรูปแบบจุดลอยตัวคำอธิบายต่อไปนี้จะอธิบายถึงคำศัพท์และรายละเอียดเบื้องต้นของการแสดงจุดลอยตัวแบบไบนารีของ IEEE 754 และรูปแบบความแม่นยำสองโดยปกติจำนวนจริงใน binary จะแสดงในรูปแบบต่อไปนี้เมื่อ I m และ F n จะเป็น 0 หรือ 1 ของจำนวนเต็มและเศษส่วนตามลำดับจำนวน จำกัด สามารถแสดงได้ด้วยสี่ส่วนประกอบ integers, เครื่องหมาย s, ฐาน b, significand m และเลขยกกำลัง e จากนั้นค่าตัวเลขของตัวเลขจะถูกประเมินเป็น -1 sxmxbe ในกรณีที่ m b ขึ้นอยู่กับฐานและจำนวนบิตที่ใช้ในการเข้ารหัสส่วนประกอบต่างๆมาตรฐาน IEEE 754 กำหนดรูปแบบพื้นฐาน 5 รูปแบบรูปแบบ binary32 และ binary64 เป็นรูปแบบเดียวที่มีความแม่นยำสูงและรูปแบบความแม่นยำสองเท่าตามลำดับ ฐานเป็น 2.Table 1 พรีซิชั่ Representation. Single รูปแบบความแม่นยำดังกล่าวในตารางที่ 1 รูปแบบความแม่นยำเดียวมี 23 บิตสำหรับ significand 1 หมายถึงบิตโดยนัยรายละเอียดด้านล่าง 8 บิตสำหรับเลขยกกำลังและ 1 บิตสำหรับการลงนามตัวอย่างเช่น จำนวนเหตุผลที่ 9 2 สามารถแปลงเป็นรูปแบบความละเอียดเดียวแบบลอยตัวดังต่อไปนี้ผลที่ได้กล่าวเป็นนัยถ้ามีการแสดงด้วย 1 บิตชั้นนำเช่น 1 001 2 x 2 2 ในทำนองเดียวกันเมื่อจำนวน 0 000000001101 2 x 2 3 เป็น normalized, ปรากฏเป็น 1 101 2 x 2 -6 ละเว้นนี้โดยนัย 1 ด้านซ้ายให้เรา mantissa ของจำนวนลอยหมายเลข normalized ให้ความถูกต้องมากขึ้นกว่า de - normalized หมายเลขตรงกันนัยที่สุด bit สามารถ ถูกนำมาใช้เพื่อแสดงความถูกต้องยิ่งขึ้น 23 1 24 บิตซึ่งเรียกว่า subnormal representation ตัวเลขทศนิยมจะแสดงในรูปแบบ normalised ตัวเลข subnormal ตกอยู่ในประเภทของ de-normalized numbers การแทน subnormal จะลดช่วง exponent ออกเล็กน้อย สามารถเป็น normalised ได้เนื่องจากจะส่งผลให้เลขชี้กำลังที่ไม่ได้พอดีในฟิลด์ตัวเลข Subnormal มีความถูกต้องน้อยกว่านั่นคือพวกเขามีห้องน้อยกว่าสำหรับบิตที่ไม่ใช่ศูนย์ในฟิลด์ fraction กว่าจำนวนที่เป็น normalised แท้จริงความถูกต้องลดลงเป็นขนาดของ subnormal number reduced อย่างไรก็ตามการแทนค่าย่อยจะเป็นประโยชน์ในการจัดทำช่องว่างของจุดลอยตัวใกล้ศูนย์ในคำอื่น ๆ ผลลัพธ์ข้างต้นสามารถเขียนเป็น -1 0 x 1 001 2 x 2 2 ซึ่งจะทำให้ส่วนประกอบจำนวนเต็มเป็น s 0, b 2, significand m 1 001, mantissa 001 และ e 2 หมายเลขทศนิยมที่สอดคล้องกันแบบลอยตัวเดียวสามารถแสดงในรูปแบบไบนารีดังที่แสดงไว้ด้านล่างเมื่อฟิลด์เลขชี้กำลังควรเป็น 2 , เข้ารหัสยังเป็น 129 127 2 เรียกว่าเลขยกกำลังลำเอียงฟิลด์เลขชี้กำลังอยู่ในรูปแบบไบนารีธรรมดาซึ่งยังหมายถึง exponents ลบด้วยการเข้ารหัสเช่นขนาดสัญญาณคำชมเชย 1, 2 s เสริม ฯลฯ เลขยกกำลังลำเอียงจะใช้สำหรับการแสดงออกของ exponents ลบ เลขยกกำลังสองมีข้อดีกว่าการแสดงเชิงลบอื่น ๆ ในการดำเนินการเปรียบเทียบ bitwise ของสองจุดลอยตัวสำหรับความเท่าเทียมกันอคติ 2 n-1 1 ซึ่ง n เป็นบิตที่ใช้ในการเลขยกกำลังจะถูกเพิ่มลงในเลขชี้กำลัง e เพื่อให้ได้เลขยกกำลังลำเอียง E ดังนั้น , เลขชี้กำลังเอ่อ E ของหมายเลขความแม่นยำเดียวสามารถหาได้ตามช่วงของเลขยกกำลังในรูปแบบความแม่นยำเดียวคือ -126 ถึง 127 ค่าอื่น ๆ ใช้สำหรับสัญลักษณ์พิเศษหมายเหตุเมื่อเราแกะตัวเลขทศนิยมแล้วเลขชี้กำลังที่ได้จะเป็นเลขยกกำลังเชิงลบ 127 จากเลขชี้กำลังลำเอียงเราสามารถดึงเลขชี้กำลังที่เป็นกลางรูปต่อไปนี้แสดงให้เห็นถึงจุดลอยแบบแม่นยำ Double. As ดังกล่าวในตารางที่ 1 รูปแบบความแม่นยำคู่ มี 52 บิตสำหรับ significand 1 หมายถึงบิตโดยนัย 10 บิตสำหรับเลขชี้กำลังและ 1 บิตสำหรับเครื่องหมายข้อกำหนดอื่น ๆ ทั้งหมดจะเหมือนกันสำหรับรูปแบบความแม่นยำสองยกเว้นขนาดของส่วนประกอบต่างๆการเปลี่ยนแปลงที่เล็กที่สุดที่สามารถแสดงในการแสดงจุดลอยเรียกว่า เป็นความแม่นยำส่วนที่เป็นเศษส่วนของหมายเลขความแม่นยำเดียวมาตรฐานมีความละเอียด 23 บิต 24 บิตที่มีบิตโดยนัยนี้สอดคล้องกับบันทึก 10 2 23 6 924 7 ลักษณะของทศนิยมทศนิยมลอการิทึมของความถูกต้องในทำนองเดียวกันในกรณีที่ตัวเลขความแม่นยำสองเท่า ความแม่นยำในการบันทึก 10 2 52 15 654 16 หลักทศนิยมความถูกต้องในการแทนค่าทศนิยมจะขึ้นอยู่กับจำนวนของบิต significand ในขณะที่ช่วงถูก จำกัด ด้วยเลขยกกำลังตัวเลขทั้งหมดไม่ถูกต้องสามารถแสดงได้ในรูปแบบทศนิยมสำหรับหมายเลขใด ๆ ที่ไม่ได้ลอยตัว จำนวนจุดมีสองตัวเลือกสำหรับการประมาณจุดลอยกล่าวว่าจำนวนจุดลอยตัวใกล้เคียงน้อยกว่า x เป็น x และ floati ที่ใกล้ที่สุด จุดจำนวนมากกว่า x เป็น x การดำเนินการปัดเศษจะดำเนินการกับจำนวนบิตสำคัญในเขตตัวอ่อนที่ขึ้นอยู่กับโหมดที่เลือกโหมด round down จะทำให้ x ตั้งค่าเป็น x โหมด round up ทำให้ x กำหนดเป็น x รอบไป zero mode ทำให้ x เป็น x หรือ x ค่าใด ๆ อยู่ระหว่างศูนย์และรอบไปจนถึงโหมดที่ใกล้ที่สุดกำหนด x ถึง x หรือ x ซึ่งใกล้เคียงที่สุด x โดยปกติแล้วรอบที่ใกล้ที่สุดคือโหมดที่ใช้มากที่สุดความใกล้ชิดของการแสดงจุดลอยกับค่าที่แท้จริงเรียกว่า ความถูกต้องแม่นยำรูปแบบบิตมาตรฐานกำหนดรูปแบบบิตจุดลอยพิเศษเพียงไม่กี่จุด Zero สามารถ t มีความสำคัญมากที่สุด 1 บิตดังนั้นจึงไม่สามารถเป็นนัยได้การแทนบิตที่ซ่อนต้องใช้เทคนิคพิเศษสำหรับการจัดเก็บศูนย์เราจะมีรูปแบบบิตที่ต่างกัน 0 และ -0 สำหรับค่าเป็นตัวเลขเดียวกันสำหรับศูนย์สำหรับการแทนจุดลอยตัวแบบความละเอียดเดียวรูปแบบเหล่านี้จะได้รับด้านล่าง 00000000 00000000000000000000000 0.1 00000000 00000000000000000000000 -0 ในทำนองเดียวกันมาตรฐาน หมายถึงสอง patters บิตที่แตกต่างกันสำหรับ INF และ - INF เดียวกันจะได้รับด้านล่าง 11 11111111 00000000000000000000000 INF.1 11111111 00000000000000000000000 - INF. All ของตัวเลขพิเศษเหล่านี้เช่นเดียวกับตัวเลขพิเศษอื่น ๆ ด้านล่างเป็นตัวเลขที่ผิดปกติที่แสดงผ่านการใช้งาน รูปแบบบิตพิเศษในฟิลด์เลขยกกำลังนี้จะช่วยลดช่วงเลขยกกำลังเล็กน้อย แต่เป็นที่ยอมรับได้ค่อนข้างมากเนื่องจากช่วงมีขนาดใหญ่มากการคำนวณนิพจน์เช่น 0 x INF, 0 INF เป็นต้นทำให้ไม่มีความรู้สึกทางคณิตศาสตร์มาตรฐานเรียกผลของ นิพจน์ที่ตามมาเช่น NaN ไม่มีการแสดงออกใด ๆ ที่ตามมาด้วย NaN ให้ NaN การเป็นตัวแทนของ NaN มี significand ที่ไม่ใช่ศูนย์และ 1s ทั้งหมดในฟิลด์เลขชี้กำลังฟิลด์เหล่านี้แสดงด้านล่างสำหรับรูปแบบความละเอียดเดียว x คือ don t care bits. x 11111111 1 m 0000000000000000000000 m ที่สามารถ 0 หรือ 1 นี่ทำให้เรามีตัวแทนที่แตกต่างกันของ NaN.0 11111111 110000000000000000000000 Signaling NaN SNaN.0 11111111 100000000000000000000 Quiet NaN QNaN. U โดยปกติแล้ว QNaN และ SNaN จะใช้สำหรับการจัดการข้อผิดพลาด QNaN จะไม่เพิ่มข้อยกเว้นใด ๆ เนื่องจากแพร่กระจายผ่านการดำเนินการส่วนใหญ่โดยที่ SNaN เป็นสิ่งที่เมื่อใช้งานโดยส่วนใหญ่จะทำให้เกิดข้อยกเว้นที่ไม่ถูกต้อง Overflow และ Underflow. Overflow เกิดขึ้นเมื่อผลลัพธ์ที่แท้จริงของ การคำนวณทางคณิตศาสตร์เป็นจำนวน จำกัด แต่มีขนาดใหญ่กว่าจำนวนจุดลอยตัวที่ใหญ่ที่สุดซึ่งสามารถเก็บได้โดยใช้ความแม่นยำที่ระบุไว้ Underflow กล่าวว่าจะเกิดขึ้นเมื่อผลที่แท้จริงของการดำเนินการเลขคณิตมีขนาดเล็กกว่าในขนาดที่เล็กกว่าจำนวนจุดลอยตัวที่มีขนาดเล็กที่สุดซึ่งสามารถ overflow สามารถถูกละเลยในการคำนวณในขณะที่ underflow สามารถแทนที่ได้อย่างมีประสิทธิภาพโดยศูนย์มาตรฐาน IEEE 754 กำหนดรูปแบบทศนิยมแบบลอยตัวรายละเอียดสถาปัตยกรรมจะเหลือให้กับผู้ผลิตฮาร์ดแวร์ลำดับการจัดเก็บข้อมูลของไบต์แต่ละตัวในเลขทศนิยมแบบลอยตัวแตกต่างกันไปจาก สถาปัตยกรรมเพื่อสถาปัตยกรรมขอขอบคุณ Venki สำหรับการเขียนบทความข้างต้นโปรด wri te ความคิดเห็นถ้าคุณพบสิ่งที่ไม่ถูกต้องหรือคุณต้องการแบ่งปันข้อมูลเพิ่มเติมเกี่ยวกับหัวข้อกล่าวข้างต้นขั้นสูง Binary. Before อ่านมากในกลางขั้นสูงหรือต้นแบบ tutorials ให้แน่ใจว่าได้ดูพื้นฐานของไบนารีถ้าคุณ don t มัน อาจทำให้เกิดความสับสนแนวคิดไบนารีขั้นสูงจุดลอยเป็นส่วนหนึ่งของการเขียนโปรแกรมตั้งแต่เริ่มต้น แต่คอมพิวเตอร์จะแปลตัวเลขทศนิยมลงในโค้ดเครื่องในบทแนะนำนี้ผมจะอธิบายว่าระบบจุดลอยคือวิธีที่ใช้ และวิธีการที่คอมพิวเตอร์แปลเป็นตัวเลขทศนิยมเป็น binary. Floating จุดที่ใช้ในส่วนใหญ่ทุกโปรแกรมเดียวหรือภาษาโปรแกรมเป็นวิธีที่ถูกต้องที่สุดและมีประสิทธิภาพมากที่สุดของการจัดเก็บทศนิยมหลังจากการกวดวิชานี้คุณจะสามารถเข้าใจสิ่งที่ลอย point และวิธีการที่คุณสามารถใช้ API อื่น ๆ ที่ช่วยให้คุณสามารถสร้างจุดลอยของคุณเองได้อย่างอิสระจุดลอยส่วนใหญ่จะเรียกว่าลอยหรือเป็นคู่ใน lan มากที่สุด guages ​​จุดลอยตัวแบบคู่หรือแบบคู่จะถูกใช้เนื่องจากมีช่วงกว้างและความถูกต้องดีกว่าลอยหรือจุดลอยตัวแบบจุดเดียวบางภาษาและ APIs ช่วยให้คุณสามารถสร้างจุดลอยตัวขนาดใหญ่หรือเล็กกว่าได้ซึ่งช่วยให้คุณสามารถปรับเปลี่ยนได้ ความถูกต้องและช่วงทศนิยมเป็นจุดลอยที่มีชื่อเสียงมากที่สุดคือบิต 16 บิตบิตเดี่ยว 32 บิตบิตคู่ 64 บิต 128 บิตสี่เท่าบิตแมปทั้งหมด 256 บิตจุดที่ลอยทั้งหมดมีโครงสร้างคล้ายคลึงกันสัญลักษณ์ 0 หรือ 1 ที่บอกให้คอมพิวเตอร์ ไม่ว่าจะเป็นทศนิยมหรือเป็นลบเลขยกกำลังซึ่งบอกคอมพิวเตอร์ที่ใช้เลขยกกำลังสองและ mantissa ที่บอกค่าของคอมพิวเตอร์แต่ละประเภทมีการจัดวางที่แตกต่างกันสำหรับเลขยกกำลังและ mantissa แต่แน่นอนบิตเครื่องหมายอยู่ เดียวกันเนื่องจากเป็นเท็กซ์ Boolean. Exponent และ mantissa mantissa และเลขชี้กำลังมักจะเห็นในวิทยาศาสตร์เช่นเคมีฟิสิกส์และชีววิทยาเป็นที่รู้จักกันมักจะเป็นสัญกรณ์ทางวิทยาศาสตร์ที่คุณใส่หมายเลขแรก ซึ่งไม่ได้เป็น 0 ก่อนและปรับเลขชัยให้ตรงกับค่าตัวอย่างเช่น 0 15 จะเขียนเป็น 1 5 10 -1, 15 จะเขียนเป็น 1 5 10 1 ในกรณีนี้ mantissa คือ 1 5 และเลขยกกำลังจะ เป็น -1 หรือ 1 แต่ไบนารีทำงานแตกต่างกันเนื่องจากมีเพียง 2 ตัวเลือกในกรณีนี้ถ้าคุณมี 1 0101 2 3 เป็นอันดับแรก 1 ไม่สำคัญเพราะคุณต้องการให้หมายเลขแรกไม่เป็น 0 ดังนั้น มันจะเป็น 1 ในกรณีนี้ mantissa จะเป็น 0101 และเลขยกกำลังจะเป็น 3 แน่นอน 1 0101 2 3 หมายถึง 1010 1 ซึ่งแปลเป็น 2 3 2 1 2 -1 8 2 0 5 10 5.To แปลงทศนิยมเป็นจุดลอยคุณสามารถใช้วิธีการที่แตกต่างกัน 3 วิธีตรรกะวิธีการทางคณิตศาสตร์และวิธีการเขียนโปรแกรมวิธีตรรกะเป็นวิธีที่จะทำโดยไม่ต้องมีเครื่องคิดเลขหรือคอมพิวเตอร์กับคุณทางคณิตศาสตร์ที่จะทำ โดยเพียงแค่ใส่สูตรและวิธีการเขียนโปรแกรมคือการเรียกใช้อัลกอริทึมวิธีการเชิงตรรกะคือถ้าคุณคิดเกี่ยวกับระบบทศนิยมของเราเราจะใช้จุด ทราบว่าเลขชี้กำลังเริ่มที่จะกลายเป็นค่าลบ 19 31 หมายถึง 1 10 1 9 10 0 3 10 -1 1 10 -2 ดังนั้นเลขฐานสองที่มีทศนิยมในระหว่างจะหมายถึงเดียวกัน แต่เพียงกับฐานของคำอธิบาย 2.An ของสิ่งที่ 11 01 จะหมายถึงในกึ่ง binary. Now การแปลง 11 01 เป็นเลขฐานสอง REAL คุณจะต้องแปลเป็นสัญกรณ์วิทยาศาสตร์ในกรณีนี้ 1 101 2 1 ซึ่งจะทำให้เลขชัยของ 1 และ mantissa ของ 101 นอกจากนี้เรายังรู้บิตเครื่องหมายซึ่งเป็น 0 เพราะมัน isn ta จำนวนลบสิ่งสุดท้ายที่จะกำหนดเป็น mantissa และเลขชัยที่คุณต้องการใช้ถ้าคุณใช้คู่เช่นเดียวกับตัวอย่างนี้คุณมี เลขชี้กำลังของ 11 บิตและ mantissa ของ 52 บิตเลขชี้กำลังของหมายเลขนี้ไม่ได้เป็นเพียง 1 เพราะนี่เป็นเพราะครึ่งหนึ่งของค่าเลขชี้กำลังถูกสงวนไว้สำหรับ exponents ลบนี่คือตอนที่คุณเพิ่ม 2 exponentbit -1 ไปที่ เลขชี้กำลังที่เรามีมาก่อนดังนั้นจะกลายเป็น 1 2 11-1 -1 0 2 10 1024 100 0000 0000 ซึ่งมีความหมายตั้งแต่ครึ่งหนึ่งของค่าเลขยกกำลัง ถูกสงวนไว้โดย exponents ลบ 1023 011 1111 1111 เป็นเลขยกกำลังเป็น 2 0 1022 011 1111 1110 เป็น 2 -1 เป็นต้นท้ายที่สุดมฤตยูต้องใช้ 52 บิตดังนั้นสำหรับเรา Mantra จะไม่เป็น 101 แต่จะเป็น 101 49 ศูนย์ s. Now คุณใส่กันเลขสุดท้ายและ mantissa ด้วยเครื่องหมาย bit 1 เป็นเครื่องหมาย 100 0000 0000 เป็นเลขยกกำลังและ 101 49 ศูนย์เช่น mantissa 1100 0000 0000 1010 48 zero s หรือ C 0 0 00 00 00 00 00 . การแปลงการแปลงด้วยเหตุผลเป็นสูตรเราสามารถกำหนดสูตรไม่กี่เราสามารถเพิ่มการแปลงทางคณิตศาสตร์โดยการเพิ่มคู่ของผู้ประกอบการ Bitwise Java. public สาธารณะไบต์ getMantissa สองครั้ง d byte public static getMantissa float f byte ประชาชนคง getExponent double d สาธารณะ ไบต์แบบคงที่ getExponent float f สาธารณะแบบคงที่นานตามสองครั้ง d byte e getExponent d ไบต์ m getMantissa d ไบต์ bit byte 1 ยาว d ค่าคลิกที่นี่เพื่อเรียนรู้เพิ่มเติมเกี่ยวกับขั้นสูง Binary. Floating-point Numbers จากภาพประกอบนี้คุณสามารถกำหนด ต่อไปนี้บิตเครื่องหมายคือ 1 แสดงจำนวนลบค่าเลขชี้กำลังคือ 10000010 binary หรือ 130 decimal หัก 127 จาก 130 ใบ 3 ซึ่งเป็นเลขยกกำลังที่แท้จริง mantissa ปรากฏเป็นเลขฐานสองต่อไปนี้มีจุดไบนารีที่ด้านซ้ายของ mantissa ที่อยู่ เสมอโดย 1 หลักนี้จะถูกละเว้นจากรูปแบบที่เก็บไว้ของจำนวนจุดลอยตัวเพิ่ม 1 และจุดไบนารีที่จุดเริ่มต้นของ mantissa ให้ค่าต่อไปนี้เมื่อต้องการปรับ mantissa สำหรับเลขยกกำลังให้ย้ายจุดทศนิยมไปที่ ซ้ายสำหรับค่าตัวชี้ขาดเชิงลบหรือด้านขวาสำหรับค่าตัวชี้วัดเชิงบวกเนื่องจากเลขชี้กำลังเป็นสาม mantissa ถูกปรับดังนี้ผลที่ได้คือเลขทศนิยมแบบไบนารีตัวเลขไบนารีที่ด้านซ้ายของจุดทศนิยมหมายถึงพลังของสองที่สอดคล้องกับ ตำแหน่งตัวอย่างเช่น 1100 หมายถึง 1 2 3 1 2 2 0 2 1 0 2 0 ซึ่งเป็น 12 หลักทางด้านขวาของจุดทศนิยมยังหมายถึงพลังของสองที่สอดคล้องกับตำแหน่งของพวกเขาอย่างไร เคยมีพลังเป็นลบยกตัวอย่างเช่น 100 หมายถึง 1 2 -1 0 2 -2 0 2 -3 ซึ่งเท่ากับ 5. ผลรวมของค่าเหล่านี้คือ 12 5 เนื่องจากบิตเครื่องหมายถูกตั้งค่าตัวเลขนี้ควรเป็นค่าลบดังนั้น, ค่าฐานสิบหก 0xC1480000 คือ -12 5.Related Knowledgebase Articles. Development Tools. Hardware หลักประกันข้อมูลสำคัญเว็บไซต์นี้ใช้คุกกี้เพื่อเก็บข้อมูลในคอมพิวเตอร์ของคุณโดยการใช้งานเว็บไซต์ของเราต่อไปคุณยินยอมให้ cookies ของเราไม่แสดงข้อความนี้ อีกครั้งหนึ่งสำหรับ Floating-Point Converter. About Decimal to Floating-Point Converter ซึ่งเป็นทศนิยมเพื่อแปลงจุดลอยตัวไบนารีมันจะแปลงเป็นเลขทศนิยมไปยังจุดลอยตัวแบบไบนารีของ IEEE 754 ที่มีความแม่นยำและใกล้เคียงที่สุดเพียงจุดเดียว หมายเลขโดยใช้การปัดเศษ round-half-to-even การปัดเศษค่าเริ่มต้นของ IEEE rounding mode ใช้กับเลขคณิตที่คำนวณได้โดยพลการดังนั้นการแปลงจะถูกปัดอย่างถูกต้องมันจะแปลงตัวเลขธรรมดาและตัวเลขที่ผิดปกติและจะแปลงตัวเลขที่ล้นไปเป็นอินฟินิตี้ o r underflow เป็นศูนย์ผลลัพธ์ที่ได้คือตัวเลขทศนิยมที่สามารถแสดงในรูปแบบทศนิยมสิบแบบในรูปแบบไบนารีในสัญกรณ์ทางวิทยาศาสตร์แบบสัญกรณ์สัญกรณ์มาตรฐานในรูปแบบสัญกรณ์แบบไบนารีมาตรฐานเป็นเลขทศนิยมที่เป็นลอการิทึมครั้งที่สองเป็นจำนวนเต็มทศนิยม พลังของสองเป็นจำนวนเต็มทศนิยมครั้งพลังของสิบเป็นทศนิยมคงที่ฐานสิบหกคงที่ในไบนารีดิบและในฐานสิบหกดิบแต่ละรูปแบบหมายถึงค่าที่แน่นอนของจำนวนจุดลอยตัวทำไมต้องใช้ตัวแปลงสัญญาณนี้ ตัวแปลงจะแสดงให้เห็นว่าทำไมตัวเลขในโปรแกรมคอมพิวเตอร์ของคุณเช่น 0 1 ไม่ทำตัวตามที่คุณคาดหวังไว้ข้างในเครื่องคอมพิวเตอร์ตัวเลขส่วนใหญ่ที่มีจุดทศนิยมสามารถประมาณจำนวนอื่นได้เพียงเล็กน้อยจากที่คุณต้องการ , ต้องยืนอยู่ในนั้นตัวอย่างเช่นใน single-precision floating-point, 0 1 กลายเป็น 0 100000001490116119384765625 ถ้าโปรแกรมของคุณกำลังพิมพ์ 0 1 มันโกหกคุณถ้าพิมพ์ 0 100000001 ก็ยังนอนอยู่ แต่อย่างน้อย มันบอกคุณว่าคุณไม่ได้จริงๆ t มี 0 1. การใช้ตัวแปลงข้อมูลนี้ให้ป้อนตัวเลขบวกหรือลบเช่นในมาตรฐานเช่นเลขที่ 134 45 หรือเลขยกกำลังเช่นแบบฟอร์ม 1 3445e2 ระบุค่าเศษเศษที่มีจุดทศนิยมและไม่ใช้เครื่องหมายจุลภาคโดยหลักคุณสามารถป้อนค่า โปรแกรมคอมพิวเตอร์รับเป็นแบบอักษรลอยตัวยกเว้นไม่มีส่วนต่อท้ายใด ๆ เช่น f. ตรวจสอบกล่องสำหรับความแม่นยำของ IEEE ที่คุณต้องการเลือก Double Single หรือทั้งคู่ Double เป็นค่าเริ่มต้น Double หมายถึง significand 53 บิตน้อยกว่าถ้า subnormal ด้วย 11 บิต เลขยกกำลังเดี่ยวหมายถึง significand 24 บิตน้อยกว่าถ้าเป็นอนุภาคที่มีตัวเลข 8 บิตตรวจสอบกล่องสำหรับรูปแบบผลลัพธ์ที่คุณต้องการเลือกหนึ่งหรือสิบตัวคั่นเป็นค่าดีฟอลต์คลิกแปลงเพื่อแปลงคลิกล้างเพื่อรีเซ็ตฟอร์มและเริ่มต้น จาก scratch. If คุณต้องการแปลงหมายเลขอื่นเพียงแค่พิมพ์ผ่านหมายเลขเดิมและคลิกแปลงไม่จำเป็นต้องคลิกล้างแรก. มีสิบรูปแบบ output ให้เลือก. แสดงตัวเลขทศนิยมในทศนิยมขยายกล่องออก ถ้าจำเป็น sary เพื่อดูตัวเลขทั้งหมดไบนารีแสดงตัวเลขทศนิยมใน binary ขยายกล่องเอาท์พุทถ้าจำเป็นเพื่อดูตัวเลขทั้งหมดสัญกรณ์วิทยาศาสตร์ทศนิยมสิบเลขแสดงจำนวนทศนิยมในทศนิยม แต่กระชับโดยใช้สัญกรณ์ทางวิทยาศาสตร์ normalized ขยายการแสดงผล กล่องถ้าจำเป็นเพื่อดูตัวเลขทั้งหมดสัญกรณ์ทางวิทยาศาสตร์แบบเลขฐานสองแสดงจำนวนจุดลอยตัวในไบนารี แต่มีขนาดกะทัดรัดโดยใช้สัญกรณ์ทางวิทยาศาสตร์ binary สัญกรณ์ normalized หมายเหตุตัวเลขย่อยจะแสดงเป็น normalised พร้อมกับเลขชี้กำลังที่แท้จริงของพวกเขา Normalized decimal times พลังของ สองแสดงจำนวนทศนิยมในสัญกรณ์ไฮบริดแบบ normalized ไฮบริดเป็นตัวเลขทศนิยม normalized พลังของสองจำนวนเต็มครั้งที่สองพลังของสองแสดงจำนวนทศนิยมเป็นจำนวนเต็มทศนิยมครั้งอำนาจของสองแทนไบนารี ของจำนวนเต็มทศนิยมเป็นรูปแบบบิตของการแสดงจุดลอยตัวน้อยลงตามลำดับรูปแบบนี้เป็นที่น่าสนใจที่สุดสำหรับ exponents ลบตั้งแต่นั้น แสดงจำนวนจุดลอยตัวเป็นจำนวนเต็มทศนิยมครั้งอำนาจของสิบรูปแบบนี้เป็นที่น่าสนใจที่สุดสำหรับ exponents ลบเพราะมันหมายถึงจำนวนจุดลอย เป็นส่วนขยายขยายกล่องเอาท์พุทถ้าจำเป็นเพื่อดูตัวเลขทั้งหมดคงที่ทศนิยมคงที่ทศนิยมแสดงตัวเลขลอยตัวเป็นค่าคงที่ทศนิยมลอยหกหมายเหตุมีหลายวิธีที่จะจัดรูปแบบค่าคงที่คงที่เลขฐานสิบหกตามที่คุณต้องการ ดูว่าตัวอย่างเช่นคุณเปรียบเทียบผลลัพธ์ของ Java, Visual C, gcc C และ Python โปรแกรมความแตกต่างในหลายภาษาเป็นภาษาผิวเผินแม้ว่าค่าศูนย์ท้ายอาจเป็นหรือไม่อาจแสดงได้ แต่เลขบวกอาจเป็นบวกหรือไม่ก็ได้ etc แปลงนี้รูปแบบคงที่โดยไม่ต้องต่อท้ายศูนย์และไม่มีเครื่องหมายบวกหมายเหตุเช่นเดียวกับหลายภาษาโปรแกรมตัวแปลงนี้จะแสดงตัวเลข subnormal unnormalized กับ exponents ของพวกเขาตั้งค่าต่ำสุด n ormal exponent. Note ตัวเลขเลขฐานสิบหกล่าสุดในค่าคงที่ทศนิยมลอยตัวเลขฐานสิบหกอาจมีจำนวนไบนารี 0 ตามหลังภายใน t doesn t จำเป็นต้องบ่งบอกว่าบิตเหล่านี้มีอยู่ในรูปแบบ IEEE ที่เลือกไบนารีด้านล่างแสดงจำนวนจุดลอยตัวในเครื่องหมายรูปแบบ IEEE ดิบ ตามด้วยฟิลด์เลขชี้กำลังตามด้วยฟิลด์ significand เลขฐานสิบหกแสดงตัวเลขทศนิยมในรูปแบบ IEEE ดิบซึ่งเทียบเท่ากับรูปแบบไบนารีดิบ แต่แสดงเป็นรูปเลขฐานสิบหกที่มีขนาดกะทัดรัด ดูที่นี่สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับรูปแบบการแสดงผลเหล่านี้มีสองแฟล็กเอาต์พุตไม่ถูกต้องหากเลือกไว้แสดงว่าการแปลงไม่เป็นไปตามที่กล่าวมาแล้วก็จะต้องมีการปัดเศษเป็นจำนวนใกล้เคียงกับจำนวนที่ป้อนเข้า ไม่ตรงกับการป้อนข้อมูลทศนิยม แต่นี่เป็นวิธีที่เร็วกว่าที่จะบอกได้หมายเหตุ: ตัวแปลงสกุลเงินนี้ล้นไปยังอินฟินิตี้และ underflow เป็นศูนย์เป็นไม่ถูกต้องหากมีการตรวจสอบนี้แสดงให้เห็นว่าจำนวนนั้นเล็กเกินไปและแปลงด้วยความแม่นยำน้อยกว่า ความจริงที่เกิดขึ้นจริงจะปรากฏในวงเล็บผมเขียนแปลงนี้ตั้งแต่เริ่มต้นมันไม่พึ่งพาฟังก์ชั่นการแปลงพื้นเมืองเช่น strtod หรือ strtof หรือ printf มันขึ้นอยู่กับจำนวนเต็มตามขั้นตอนใหญ่ที่ฉันอธิบายในบทความของฉันทศนิยมที่ถูกต้องในการลอยตัวจุดใช้บิ๊ก จำนวนเต็ม I ve ดำเนินการโดยใช้ BCMath. For เหตุผลในทางปฏิบัติฉันได้ตั้งข้อ จำกัด ค่อนข้าง จำกัด ในความยาวของการป้อนข้อมูลทศนิยมที่คุณจะได้รับข้อความแสดงข้อผิดพลาดถ้าคุณกดปุ่มนี้จะกรองปัจจัยการผลิตที่ w ould ล้นไปยังอินฟินิตี้หรือ underflow เป็นศูนย์ แต่ก็จะป้องกันไม่ให้คุณเข้าสู่กรณีที่มีการปัดเศษแบบ halfway อย่างหนักสำหรับบันทึกแม้ว่าตัวแปลงข้อมูลนี้จะยอมรับตัวอย่างที่ยากทั้งหมดที่ฉันเคยกล่าวไว้ในเว็บไซต์ของฉันสำหรับปัจจัยการผลิตทั้งหมดที่ได้รับการยอมรับ เอาท์พุทถูกต้องแม้จะมีข้อบกพร่องใด ๆ ที่หลบหนีการทดสอบที่กว้างขวางของฉันความแม่นยำ Floating Point, aka ทำไม Excel ให้ฉันดูเหมือนจะไม่ถูกต้อง Answers. We บางครั้งได้รับอีเมลจากลูกค้าของเราอ้างว่าได้พบข้อผิดพลาดการคำนวณใน Excel เมื่อในความเป็นจริงการคำนวณ isn t ไม่ถูกต้อง แต่ผลข้างเคียงของความแม่นยำของจุดลอยตัวแบบไบนารีทำให้ดูเหมือนว่าผู้เขียนวันนี้ Jessica Liu ผู้จัดการโครงการในทีม Excel กล่าวถึงวิธีที่ Excel ทำการคำนวณอธิบายว่าทำไมบางครั้งคุณเห็นคำตอบที่คุณอาจไม่คาดหวัง เคล็ดลับบางอย่างเกี่ยวกับวิธีหลีกเลี่ยงปัญหาการปัดเศษดูตารางต่อไปนี้ฉันต้องการเพื่อให้สามารถระบุได้อย่างรวดเร็วกรณีที่ความแตกต่างแน่นอนยิ่งใหญ่ er มากกว่าหรือเท่ากับ 0 005 ดังนั้นผมจึงใช้กฎการจัดรูปแบบตามเงื่อนไขในคอลัมน์ความแตกต่างแบบสัมบูรณ์เพื่อจัดรูปแบบค่ามากกว่าหรือเท่ากับ 0 005 เป็นสีแดงเมื่อสแกนลงในตารางผมสังเกตว่าค่า 0 005 ไม่ได้ถูกเน้น ฉันตรวจสอบกฎการจัดรูปแบบตามเงื่อนไขของฉันและสูตรที่ฉันใช้ในการคำนวณความแตกต่างสัมบูรณ์ ABS A2-B2 ดูเหมือนจะถูกต้องจากนั้นเพิ่มความแม่นยำของคอลัมน์สัมบูรณ์ที่แน่นอนเพื่อให้ได้ผลลัพธ์ที่แม่นยำมากขึ้นฉันพบว่าผลลัพธ์ของฉันมีการเปลี่ยนแปลง ทำไมต้อง 1 3240 1 3190 0 009999999999999.Have คุณเคยเจอสถานการณ์คล้ายกันที่สเปรดชีตของคุณไม่ได้ให้ผลลัพธ์ที่คุณคาดหวังสำหรับการคำนวณที่ดูเหมือนง่ายคุณได้ตรวจสอบการคำนวณของคุณและยังคงไม่สามารถคิดออกว่ามันผิดพลาดดี สถานการณ์ที่คุณกำลังเผชิญอาจเกิดจากความแม่นยำของจุดลอย Excel ได้รับการออกแบบให้สอดคล้องกับมาตรฐาน IEEE สำหรับ Binary Floating-Point Arithmetic IEEE 754 มาตรฐานกำหนดวิธีการลอยตัว - point จะถูกเก็บและคำนวณมาตรฐาน IEEE 754 ใช้กันอย่างแพร่หลายเพราะช่วยให้ตัวเลขจุดลอยถูกเก็บไว้ในพื้นที่ที่เหมาะสมและการคำนวณสามารถเกิดขึ้นได้ค่อนข้างเร็วข้อดีของการลอยตัวเหนือจุดแทนคงที่คือสามารถรองรับได้ ช่วงกว้างของค่าตัวอย่างเช่นการแสดงจุดคงที่ที่มี 5 หลักทศนิยมที่มีจุดทศนิยมตั้งอยู่หลังตัวเลขที่สามสามารถแทนตัวเลข 123 34, 12 23, 2 45 ฯลฯ ในขณะที่การแสดงจุดลอยตัวด้วยความแม่นยำ 5 หลัก สามารถแทน 1 2345, 12345, 0 00012345 ฯลฯ ในทำนองเดียวกันการแทนจุดลอยยังช่วยให้การคำนวณในช่วงกว้างของ magnitudes ในขณะที่รักษาความแม่นยำตัวอย่างเช่นการแสดงจุดโฟกัสที่มีความแม่นยำ 4 หลัก 1 10 -1 x 1 1 10 -1 1 21 x 10 -2 การแทนค่าคงที่ที่มีความแม่นยำ 4 หลักโดยมีจุดทศนิยมตั้งอยู่หลังเครื่องหมายแรก 110 110 0 0 012 ตัวเลขทั้งหมดที่แสดงในรูปแบบจุดลอย a re-reasonational ตัวเลขจำนวนที่ไม่สมเหตุผลเช่นหรือหรือไม่สิ้นสุดจำนวนเหตุผลจะต้องประมาณจำนวนหลักของความถูกต้องยังจำกัดความถูกต้องของตัวเลข Excel จัดเก็บตัวเลขความแม่นยำ 15 หลักเช่นจำนวน 1234567890123456 ไม่สามารถแสดงได้ถ้า 15 ถูกใช้มาตรฐาน IEEE 754 floating point point ต้องมีการเก็บตัวเลขไว้ในรูปแบบไบนารีซึ่งหมายความว่าต้องมีการแปลงก่อนที่ตัวเลขจะถูกนำมาใช้ในการคำนวณหากตัวเลขสามารถแสดงได้ในรูปแบบ floating-point แล้ว conversion is exact ถ้าไม่ใช่การแปลงจะทำให้ได้ค่าที่ปัดเศษซึ่งจะแสดงค่าเดิมตัวเลขที่ปรากฏในรูปแบบทศนิยมอาจต้องประมาณเมื่อแปลงเป็นทศนิยมแบบลอยตัวตัวอย่างเช่นเศษส่วน 1 10 สามารถ แทนในรูปแบบทศนิยมเป็นจำนวนตรรกยะ 0 1 อย่างไรก็ตาม 0 1 ไม่สามารถแสดงได้อย่างแม่นยำในจุดลอยตัวแบบไบนารีของ precis แน่นอน ไอออน 0 1 กลายเป็นเลขฐานสิบหกที่ทำซ้ำ 0 0001100110011 โดยที่ลำดับ 1100 ทำซ้ำเป็นอนันต์ตัวเลขนี้ไม่สามารถแสดงได้ในพื้นที่ จำกัด ดังนั้นใน Excel จะมีการปัดเศษลงประมาณ 2 8E-17 เมื่อมีการจัดเก็บโครงสร้างของ Floating Point Number หมายเลขลอยตัวถูกเก็บไว้ในไบนารีในสามส่วนภายในช่วง 65 บิตเครื่องหมายเลขชี้กำลังและเครื่องหมาย mantissa เครื่องหมายจะเก็บเครื่องหมายของจำนวนบวกหรือลบ 0 แสดงจำนวนบวกขณะที่ 1 หมายถึงจำนวนลบเลขชี้กำลังเก็บพลังงานของ 2 ซึ่งจำนวนถูกยกขึ้นหรือลดลงฟิลด์ exponent จำเป็นต้องสามารถแทน exponents บวกและลบได้เพื่อหลีกเลี่ยงการเก็บค่า exponents ลบค่าความอคติจะถูกเพิ่มลงในความเป็นจริง เลขยกกำลังอคติสำหรับตัวเลขที่มีความแม่นยำสองซ้ำคือ 1023 ตัวอย่างเช่นค่าที่เก็บไว้ 1000 แสดงเลขยกกำลัง 1000 1023 หรือ -23. แมงกักพรุนเก็บเลขที่แท้จริงประกอบด้วยบิตนำโดยนัยและเศษส่วน on bits ขนาดของ mantissa กำหนดว่าจำนวนจุดลอยตัวใกล้เคียงกันสองตัวสามารถเป็น mantissa และเลขยกกำลังถูกเก็บไว้ในส่วนประกอบที่แยกต่างหากความแม่นยำของตัวเลขจะแตกต่างกันไปขึ้นอยู่กับขนาดของ mantissa Excel สามารถเก็บตัวเลขได้ตั้งแต่ 1 79769313486232E308 ถึง 2 2250738585072E-308 อย่างไรก็ตามสามารถทำได้ภายใน 15 หลักของ precisionmon ตัวอย่างข้อผิดพลาดเนื่องจากการคำนวณจุดลอยตัวตัวอย่าง 1 การสูญเสียความแม่นยำเมื่อใช้ตัวเลขที่มากมากค่าที่ได้ใน A3 คือ 1 2E 100 ซึ่งมีค่าเท่ากับ A1 เนื่องจาก Excel เก็บตัวอักษรไว้ 15 หลักความแม่นยำอย่างน้อย 100 หลักในการคำนวณสูตรข้างต้นตัวอย่าง 2 การสูญเสียความแม่นยำเมื่อใช้เบอร์เล็กมากค่าที่ได้ในเซลล์ A1 คือ 1 00012345678901 แทน 1 000123456789012345 นี่คือ อีกครั้งเป็นเพราะ Excel เก็บ 15 หลักของความแม่นยำแม่นยำอย่างน้อย 19 หลักจะต้องใช้ในการคำนวณสูตรข้างต้นตัวอย่าง 3 ทำซ้ำตัวเลขไบนารี หลายชุดของการดำเนินการเลขคณิตบนตัวเลขทศนิยมอาจทำให้ผลลัพธ์ที่ดูเหมือนไม่ถูกต้องโดยจำนวนเงินที่น้อยมากตัวอย่างเช่นสมการได้รับการประเมินเป็นจำนวน -2 78E-17 หรือ -0 0000000000000000278 แทน 0 นี่คือ เนื่องจากข้อเท็จจริงที่ว่ามาตรฐาน IEEE 754 ต้องการให้จัดเก็บตัวเลขในรูปแบบไบนารีตามที่ได้อธิบายไว้ก่อนหน้านี้ไม่สามารถแปลงเลขทศนิยมทั้งหมดเป็นเลขฐานสองได้เช่นในกรณีของ 0 1 การแปลงเกิดการสูญเสียความแม่นยำการแก้ไขความถูกต้อง ข้อผิดพลาดให้เรากลับไปที่ตัวอย่างแรกของฉันที่การจัดรูปแบบตามเงื่อนไขของฉันดูเหมือนจะไม่ทำงานฉันรู้ว่าตอนนี้เกิดจากข้อเท็จจริงที่ว่าตัวเลขที่ฉันใช้เพื่อคำนวณความแตกต่างแน่นอนไม่มีข้อมูลเทียบเท่าไบนารีที่แน่นอนส่งผลให้ 1 3240 1 3190 0 0049999999999999 มีสองวิธีขั้นพื้นฐานที่คุณสามารถชดเชยข้อผิดพลาดบางส่วนได้เนื่องจากการคำนวณจุดลอยวิธีแรกคือการใช้ฟังก์ชัน ROUND ฟังก์ชัน ROUND สามารถใช้ได้ รอบตัวเลขจำนวนตำแหน่งทศนิยมที่จำเป็นในการคำนวณของคุณสำหรับคอลัมน์ความแตกต่างสัมบูรณ์ของฉันฉันต้องการเพียง 4 หลักทศนิยมดังนั้นฉันจึงเปลี่ยนสูตรในคอลัมน์สัมบูรณ์ที่แตกต่างจากกฎการจัดรูปแบบตามเงื่อนไขของฉันทำงานตามที่คาดไว้ตอนนี้ตั้งแต่ 0 0049999999999999 ถูกปัดเศษเป็น 0 0050 วิธีที่สองเพื่อป้องกันไม่ให้ข้อผิดพลาดในการปัดเศษมีผลต่อการทำงานของคุณคือการใช้ตัวเลือกความแม่นยำในการแสดงผลตัวเลือกนี้จะบังคับให้ค่าของตัวเลขแต่ละตัวในแผ่นงานเป็นค่าที่แสดงขึ้นเพื่อเปิดใช้งานตัวเลือกนี้ ขั้นตอนเหล่านี้คลิกปุ่ม Microsoft Office - ตัวเลือก Excel - ขั้นสูงในส่วน "" เมื่อคำนวณเวิร์กบุคนี้ให้เลือกเวิร์กบุคที่คุณต้องการจากนั้นเลือกกล่องกาเครื่องหมายตั้งความแม่นยำเป็นแบบแสดงผลกลับไปใช้ตัวอย่างที่แตกต่างกันอย่างสิ้นเชิง รูปแบบเพื่อแสดงสี่ตำแหน่งทศนิยมและจากนั้นฉันจะเปิดความแม่นยำเป็นตัวเลือกที่แสดงเนื่องจากค่าการแสดงผลเป็นค่าจริงในเซลล์ตอนนี้ formatti เงื่อนไขของฉัน ng ทำงานอย่างถูกต้องเป็นสิ่งสำคัญที่จะต้องทราบว่าเมื่อสมุดงานได้รับการบันทึกไว้ความถูกต้องทั้งหมดเกินกว่าสี่ตำแหน่งทศนิยมจะหายไปตัวเลือกนี้จะมีผลต่อสมุดงานที่ใช้งานอยู่รวมทั้งแผ่นงานทั้งหมดคุณไม่สามารถยกเลิกตัวเลือกนี้และกู้คืนข้อมูลที่สูญหายได้เพื่อบันทึกสมุดงานของคุณไว้ก่อน การเปิดใช้งานตัวเลือกนี้โดยทั่วไปไม่แนะนำให้ใช้ตัวเลือกนี้เว้นแต่คุณจะแน่ใจว่าความแม่นยำจะไม่จำเป็นสำหรับสถานการณ์ของคุณ

No comments:

Post a Comment