Бит знака

В информатике бит знака — это бит, используемый в представлении чисел со знаком, который указывает на знак числа. Хотя только знаковые числовые типы данных содержат бит знака, он практически всегда располагается на позиции старшего разряда (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 Конрада Цузе, используют представление прямого кода.

Примечания