ศูนย์มีเครื่องหมาย

ศูนย์มีเครื่องหมาย หมายถึงจำนวน 0 (ศูนย์) ที่ถูกกำกับด้วยเครื่องหมายบวกหรือลบ ได้แก่ −0 (ลบศูนย์) และ +0 (บวกศูนย์) ในเลขคณิตธรรมดาทั่วไป −0 = +0 = 0 อย่างไรก็ตาม การแทนจำนวนบางระบบในคอมพิวเตอร์อนุญาตให้มีศูนย์สองชนิดนี้ได้ ซึ่งเกิดขึ้นใน "เครื่องหมายและขนาด" กับ "ส่วนเติมเต็มหนึ่ง" ของการแทนจำนวนมีเครื่องหมายสำหรับจำนวนเต็ม และในการแทนจำนวนจุดลอยตัวส่วนใหญ่ จำนวน 0 มักจะถูกเข้ารหัสเป็น +0 แต่ก็สามารถแทนด้วย −0 อย่างใดอย่างหนึ่งก็ได้
มาตรฐาน IEEE 754 สำหรับเลขคณิตของจำนวนจุดลอยตัว (ปัจจุบันมีใช้ในคอมพิวเตอร์และภาษาโปรแกรมส่วนใหญ่ที่รองรับจำนวนจุดลอยตัว) จำเป็นต้องมีทั้ง +0 และ −0 ศูนย์ทั้งสองชนิดสามารถพิจารณาว่าเป็นรูปแบบผันแปรอันหนึ่งของเส้นจำนวนจริงขยาย ตัวอย่างเช่น 1/−0 = −∞ และ 1/+0 = +∞ ซึ่งการหารด้วยศูนย์จะเป็นอนิยามเฉพาะ ±0/±0 กับ ±∞/±∞
ศูนย์ที่มีเครื่องหมายลบสะท้อนให้เห็นถึงมโนทัศน์ของคณิตวิเคราะห์เกี่ยวกับการมีค่าเข้าใกล้ 0 จากด้านที่มีค่าต่ำกว่าเป็นลิมิตด้านเดียว ซึ่งอาจเขียนได้เป็น x → 0−, x → 0− หรือ x → ↑0 สัญกรณ์ "−0" ก็ยังใช้สำหรับเขียนแทนจำนวนลบขนาดเล็กที่ถูกปัดเศษให้เป็นศูนย์อย่างไม่เป็นทางการ มโนทัศน์ของลบศูนย์ก็มีการประยุกต์ใช้เชิงทฤษฎีบางอย่างในกลศาสตร์เชิงสถิติและสาขาอื่น ๆ
การรวมศูนย์มีเครื่องหมายลงใน IEEE 754 เอ่ยอ้างว่ามันช่วยให้บรรลุความแม่นยำเชิงจำนวนในปัญหาวิกฤตบางประการ โดยเฉพาะอย่างยิ่งเมื่อคำนวณด้วยฟังก์ชันมูลฐานเกี่ยวกับจำนวนเชิงซ้อน แต่ในทางกลับกัน มโนทัศน์ของศูนย์มีเครื่องหมายขัดกับสมมติฐานทั่วไปที่สร้างขึ้นในขอบเขตต่าง ๆ ของคณิตศาสตร์ว่า ลบศูนย์ก็คือสิ่งเดียวกับศูนย์ การแทนจำนวนที่อนุญาตให้มีลบศูนย์อาจเป็นต้นตอแห่งความผิดพลาดของโปรแกรม เนื่องจากนักพัฒนาซอฟต์แวร์อาจไม่ได้ตระหนักหรือลืมไปว่า ขณะที่การแทนศูนย์ทั้งสองชนิดมีพฤติกรรมเท่ากันภายใต้การเปรียบเทียบจำนวน พวกมันมีรูปแบบบิตที่ต่างกัน และส่งผลให้เกิดผลลัพธ์จากการดำเนินการบางชนิดต่างกันด้วย
การแทนในคอมพิวเตอร์.
การเข้ารหัสส่วนเติมเต็มสอง (two's complement) ที่ใช้กันอย่างกว้างขวางไม่อนุญาตให้มีค่าลบศูนย์ การแทนจำนวนมีเครื่องหมายแบบ 1+7 บิตสำหรับจำนวนเต็ม ลบศูนย์แทนด้วยค่า 1000 0000 และการแทนส่วนเติมเต็มหนึ่ง (one's complement) แบบ 8 บิต ลบศูนย์แทนด้วยค่า 1111 1111 การเข้ารหัสทั้งสามชนิดนั้น บวกศูนย์แทนด้วยค่า 0000 0000
ในจำนวนจุดลอยตัวฐานสองของ IEEE 754 ค่าศูนย์ทั้งสองแทนโดยกำหนดให้บิตเลขชี้กำลังและเลขนัยสำคัญเป็นศูนย์ทั้งหมด สำหรับลบศูนย์ก็กำหนดให้บิตเครื่องหมายเป็นหนึ่ง เราอาจได้ลบศูนย์เป็นผลลัพธ์จากการคำนวณเฉพาะอย่าง ตัวอย่างเช่นผลจากภาวะน้อยเกินเก็บเชิงเลขคณิต (arithmetic underflow) ของจำนวนลบ หรือ −1.0*0.0 หรือเพียงแค่ −0.0
ในการเข้ารหัสจำนวนจุดลอยตัวฐานสิบของ IEEE 754 ลบศูนย์แทนโดยกำหนดให้เลขชี้กำลังเป็นค่าใดก็ได้ที่ใช้ได้ในพิสัยของการเข้ารหัส เลขนัยสำคัญกำหนดให้เป็นศูนย์ และบิตเครื่องหมายเป็นหนึ่ง
สมบัติและการจัดการ.
มาตรฐาน IEEE 754 เกี่ยวกับจำนวนจุดลอยตัวได้ระบุพฤติกรรมของบวกศูนย์และลบศูนย์ไว้ภายใต้การดำเนินการหลายอย่าง ผลลัพธ์ที่ได้อาจขึ้นอยู่กับการตั้งค่าภาวะการปัดเศษแบบ IEEE
เลขคณิต.
การคูณและการหารปฏิบัติตามกฎการผสานเครื่องหมายอันเป็นปกติดังนี้
การบวกและการลบถูกจัดการโดยเฉพาะถ้าค่าต่าง ๆ อาจถูกตัดออกได้ ดังนี้
เนื่องจากมีค่าลบศูนย์อยู่ในระบบการแทนจำนวน ประโยค "z" = −("x" − "y") และ "z" = (−"x") − (−"y") จึงไม่สามารถลดทอนให้เป็น "z" = "y" − "x" ได้ เมื่อ "x", "y", "z" เป็นจำนวนจุดลอยตัว
กฎพิเศษอื่น ๆ มีดังนี้
การหารค่าที่ไม่เป็นศูนย์ด้วยค่าศูนย์ ทำให้ตัวบ่งชี้ (flag) ของการหารด้วยศูนย์ถูกกำหนดเป็นหนึ่ง และการดำเนินการที่ให้ผลลัพธ์เป็นไม่ใช่จำนวน ก็ทำให้ตัวบ่งชี้ของการดำเนินการที่ใช้ไม่ได้ ถูกกำหนดเป็นหนึ่งเช่นกัน การจัดการความผิดปรกติจะถูกเรียกใช้ถ้ามีสำหรับตัวบ่งชี้ที่เกี่ยวข้อง
การเปรียบเทียบ.
ลบศูนย์และบวกศูนย์เมื่อดำเนินการเปรียบเทียบแบบธรรมดาควรจะมีค่าเท่ากันตามมาตรฐาน IEEE 754 ตัวอย่างเช่นตัวดำเนินการ == ของภาษาซีและภาษาจาวา ในภาษาเช่นว่านั้น จำเป็นต้องเขียนโปรแกรมด้วยกลวิธีพิเศษเพื่อแยกแยะสองค่านี้ออกจากกัน ซึ่งมีหลายแนวทาง เช่น
การแปลงชนิดข้อมูล (type casting) เป็นชนิดจำนวนเต็มจะไม่ได้ผลเสมอไป โดยเฉพาะอย่างยิ่งบนระบบส่วนเติมเต็มสอง
การใช้งานทางวิทยาศาสตร์.
−0 สามารถใช้แทนอุณหภูมิต่ำกว่าศูนย์ในอุตุนิยมวิทยา โดยเฉพาะในสเกลเซลเซียส −0 มักเป็นสิ่งสำคัญด้วยเหตุผลทางสถิติ เมื่อมีค่าไม่ต่ำพอที่จะปัดเศษให้เป็น −1 เช่นอุณหภูมิที่ −0.2 องศาเซลเซียส และค่านี้ไม่สามารถรายงานผลให้เป็น 0 องศาเซลเซียส เนื่องจากค่า 0 องศาจะไม่ถือว่าต่ำกว่าศูนย์ สำหรับการเก็บสถิติวันที่มีอุณหภูมิต่ำกว่าศูนย์องศา ซึ่งเป็นข้อมูลสถิติพื้นฐานของการเปรียบเทียบความหนาวเย็นในฤดูหนาว ดังนั้นจึงไม่สามารถละเลยไปได้
ในเรื่องของกลศาสตร์เชิงสถิติ ระบบเฉพาะที่อยู่ในสถานะของการผกผันประชากร (population inversion) อาจถูกพิจารณาว่ามีอุณหภูมิสัมบูรณ์ (absolute temperature) เท่ากับ −0 ซึ่งเป็นค่าสูงสุดเท่าที่เป็นไปได้