Значение объекта тривиально копируемого типа определяется некоторыми битами в нем, в то время как другие биты не влияют на его значение. В стандарте C ++ биты, которые не влияют на значение, называются битами заполнения .
Например, рассмотрим тип с 8 битами, где последние 4 бита являются битами заполнения, тогда объекты, представленные 00000000 и 00001111, имеют одинаковое значение и сравниваются равными.
В действительности биты заполнения часто используются для выравнивания и / или обнаружения ошибок .
Зная вышеизложенное, вы можете понять, о чем говорится в книге. Это говорит, что нет никаких битов заполнения для беззнакового типа. Однако утверждение неверно . Фактически, стандарт только гарантирует, что unsigned char
(и signed char
, char
) не имеет битов заполнения. Ниже приводится цитата из связанной части стандарта [basic.fundamental] / 1 :
Для узких типов символов все биты представления объекта участвуют в представлении значения.
Кроме того, стандарт C11 6.2.6.2/1 гласит:
Для целых типов без знака, отличных от знака без знака, биты представления объекта должны быть разделены на две группы: биты значения и биты заполнения (не должно быть ни одного из последних).