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