суббота, 21 апреля 2018 г.

Что записано в одном бите?

Положим, у нас есть бит, в который может быть записан 0 или 1. Вопрос - что означает состояние, если в него записан 0 или 1?

Если это однобитовое беззнаковое число, то у него нет знакового бита и все биты (в количестве 1) значимые, значит 0 - это 0, а 1 - это 1. Это и используется в битовых полях языка С, например
struct bits
{
  unsigned b0 : 1;
  unsigned b1 : 1;
};
Но если однобитовое число знаковое, то старший бит отводится для знака. Но в нем всего один бит. Значит получается, что в знаковом однобитовой числе нет значимых битов. Если записано 0, то значит указано что это некое неотрицательное число. А если записано 1, значит это некое отрицательное число. Но при этом какое именно - не написано, поскольку битов не осталось.

В каком-то смысле знаковое однобитовое не имеет значимых битов вообще, поэтому никакого числа не кодирует, а кодирует только знак от числа. Числа нет, а знак есть. Это примерно как улыбка чеширского кота - кота нет, а улыбка от него есть. И если определять операции над такими числами, то это операции над знаками без самих чисел.

То есть как-бы даже и сложить и вычесть такие числа нельзя, потому как это и не числа даже и не алгебра чисел, а алгебра знаков. А кто ж его знает, что означает сложение двух минусов...

Комментариев нет:

Отправить комментарий