−0 (програмування)
−0 (Від'ємний нуль) у програмуванні — число, що виникає при обчисленнях з рухомою комою (а також у деяких варіантах подання цілих зі знаком).
Представлення
У 1+7 — бітному поданні чисел зі знаком, від'ємний нуль представляється двійковим значенням 10000000 в прямому коді. У 8-бітному одинарному оберненому коді −0 представляється двійковим значенням 11111111. У стандарті подання чисел з рухомою комою IEEE 754, від'ємний нуль представляється нульовою експонентою і мантисою, та знаковим бітом, що дорівнює одиниці.
У найбільш поширеному на сьогодні подвійному доповняльному коді поняття «негативний нуль» відсутнє, що і зробило цей формат найбільш популярним.
Властивості
У таких мовах програмування, як C, C#, C++ і Java, хоча й можливо отримати від'ємний нуль як результат обчислення виразу, при порівнянні від'ємний нуль дорівнює позитивному, тому просте порівняння не може бути використано для визначення того, чи є число негативним нулем. Для перевірки на від'ємний нуль можна використовувати функцію CopySign ()
, визначену в IEEE 754, яка копіює знак числа (у цьому випадку нуля) в інше число (для перевірки знака потрібно взяти ненульове).
Для визначення знака нуля можна також використовувати ділення:
- (для додатного x)
- (для додатного x)
Результат інших операцій з від'ємним нулем:
- (для додатного x)
- (для від'ємного x)
- (для від'ємного x)
- (для додатного x)
Посилання
- Floating point types. MSDN C# Language Specification. Архів оригіналу за 17 лютого 2012. Процитовано 15 жовтня 2005.
- Division operator. MSDN C# Language Specification. Архів оригіналу за 17 лютого 2012. Процитовано 15 жовтня 2005.
- Java Floating-Point Number Intricacies, Thomas Wang, березень 2000
- Specification. General Decimal Arithmetic: Encoding Strawman 4d, version 0.96. Архів оригіналу за 17 лютого 2012. Процитовано 16 жовтня 2005. — десяткова специфікація чисел с рухомою комою, що включає негативний нуль
- Charles Kittel, Herbert Kroemer, Thermal Physics, W. H. Freeman & Company, 1980
Для детальнішого вивчення
- Michael Ingrassia. Fortran 95 SIGN Change. Sun Developer Network. Архів оригіналу за 17 лютого 2012. Процитовано 15 жовтня 2005. — зміни в функції
SIGN
в Fortran 95 для роботи с негативним нулем - JScript data types. MSDN JScript. Архів оригіналу за 17 лютого 2012. Процитовано 16 жовтня 2005. — арифметика з рухомою комою в JScript містить негативний нуль
- A look at the floating-point support of the Java virtual machine. Javaworld. Архів оригіналу за 17 лютого 2012. Процитовано 16 жовтня 2005. — представлення негативного нуля в Java virtual machine
- Comparing floating point numbers, Bruce Dawson — як працювати з негативним нулем при порівнянні чисел з рухомою комою
- John Walker. Minus Zero. UNIVAC Memories. Архів оригіналу за 17 лютого 2012. Процитовано 17 жовтня 2005. — Числа в одинарному додатковому коді на сімействі комп'ютерів UNIVAC 1100.