Является ли младший бит (LSB) всегда первым битом? - PullRequest
0 голосов
/ 04 сентября 2018

Я читаю Современный C (версия 13 февраля 2018 г. ) и на странице 42 написано

Image captured on page 42 of the book

В нем говорится, что бит с индексом 4 является младшим битом. Разве бит с индексом 0 не должен быть младшим значащим битом? (Тот же вопрос о MSB.)

Что правильно? Какая правильная терминология?

Ответы [ 3 ]

0 голосов
/ 04 сентября 2018

Определение книги не соответствует общему / типичному / основному / правильному использованию. См. Википедию, например :

В вычислениях младший значащий бит (LSB) - это позиция бита в двоичном целом числе, дающая значение единиц, то есть определяющее, является ли число четным или нечетным.

Книга, с другой стороны, похоже, рассматривает только биты, равные 1, так что в 8-битном байте, представляющем число 16, которое мы можем записать:

00010000

бит, который равен 1, имеет индекс 4 (это b4 в нотации книги), а затем он утверждает, что младший бит этого конкретного числа равен четырем.

Правильное определение просто использует LSB для обозначения этого бита, значение которого равно 1, то есть «единицы», и с этим LSB является самым правым битом. Это последнее определение более полезно, и я действительно думаю, что книга неправильна.

0 голосов
/ 04 сентября 2018

Их определение «старшего значащего бита» и «младшего значащего бита» вводит в заблуждение:

8 bit Binary number : 1 1 1 1 0 0 0 0
      Bit number      7 6 5 4 3 2 1 0
                      |     |       |         
                      |     |       least significant bit
                      |     |
                      |     |
                      |     least significant bit that is 1  
                      |
                      most significant bit that is 1 and also just most significant bit
0 голосов
/ 04 сентября 2018

Они используют необычное определение LSB и MSB, которое относится только к битам, которые установлены в 1. Таким образом, в случае 240 первый бит 1 имеет значение b 4 , а не b 0 , потому что от b 0 до b 3 все 0.

Я не уверен, почему книга считает это определение LSB / MSB полезным. Обычно это не интересно для целых чисел, хотя оно входит в игру с плавающей запятой. Числа с плавающей точкой масштабируются таким образом, чтобы целые числа выше 1 имели нулевые биты младшего разряда, сдвинутые в сторону, и показатель степени увеличивается, чтобы восполнить это (наоборот, дроби имеют свои старшие биты, сдвинутые в сторону, а показатель степени уменьшается) .

...