Бит знака
В информатике бит знака — это бит, используемый в представлении чисел со знаком, который указывает на знак числа. Хотя только знаковые числовые типы данных содержат бит знака, он практически всегда располагается на позиции старшего разряда (MSB, most significant bit)[1], поэтому в некоторых контекстах термин «бит знака» может использоваться как синоним «старшего разряда».
Почти всегда, если бит знака равен 0, число неотрицательно (положительно или равно нулю)[1]. Если бит знака равен 1, число отрицательно. В форматах, отличных от дополнительного кода, возможно существование нуля со знаком: отдельные представления «положительного нуля» и «отрицательного нуля», причём последний не соответствует математическому понятию отрицательного числа.
При использовании представления в виде кода с дополнением, для преобразования числа со знаком в более широкий формат дополнительные биты должны быть заполнены копиями бита знака, чтобы сохранить числовое значение[2], этот процесс называется расширение знака или пропагация знака[3].
Вес бита знака в дополнительном коде
| Биты | Значение в дополнительном коде |
|---|---|
| 0000 | 0 |
| 0001 | 1 |
| 0111 | 7 |
| 1000 | −8 |
| 1001 | −7 |
| 1111 | −1 |
Дополнительный код — наиболее распространённый формат для представления целых чисел со знаком. В дополнительном коде бит знака имеет вес , где — позиция разряда в числе[1]. Для 8-битного целого числа бит знака будет иметь значение , то есть −128. Поскольку это значение по модулю больше суммы всех остальных разрядов, установка этого бита делает число отрицательным, тем самым меняя знак.
Вес бита знака в обратном коде
| Биты | Значение в обратном коде |
|---|---|
| 0000 | 0 |
| 0001 | 1 |
| 0111 | 7 |
| 1000 | −7 |
| 1001 | −6 |
| 1111 | −0 |
Обратный код похож на дополнительный код, но бит знака имеет вес , где — позиция разряда в числе. Для 8-битного целого числа бит знака будет иметь значение , то есть −127. Это позволяет представлять два типа нуля: положительный и отрицательный, что невозможно в дополнительном коде.
Бит знака в прямом коде
| Биты | Значение в прямом коде |
|---|---|
| 0000 | 0 |
| 0001 | 1 |
| 0111 | 7 |
| 1000 | −0 |
| 1001 | −1 |
| 1111 | −7 |
В представлении с прямым кодом бит знака напрямую определяет знак числа. Если бит знака равен 0, число положительно; если бит знака равен 1, число отрицательно[2]. Как и в обратном коде, это позволяет существовать как положительному, так и отрицательному нулю.
Бит знака в числах с плавающей запятой
Числа с плавающей запятой, такие как формат IEEE, формат IBM, формат VAX, а также форматы, использовавшиеся в Z1 и Z3 Конрада Цузе, используют представление прямого кода.