Задать вопрос
@IndusDev

Вопрос по книге K&R?

Вот дан фрагмент из книги:
Унарный оператор ~ поразрядно "обращает" целое т. е. превращает каждый единичный бит в нулевой и наоборот. Например
х = х & ~077
обнуляет в х последние 6 разрядов. Заметим, что запись х & ~077 не зависит от длины (!!!)слова(какого еще слова?), и, следовательно, она лучше, чем х & 0177700, поскольку последняя подразумевает, что х занимает 16 битов. Не зависимая от машины форма записи ~077 не потребует дополнительных затрат при счете, так как ~077 — константное выражение, которое будет вычислено во время компиляции.


Не могли бы вы разъяснить выделенные предложения?
  • Вопрос задан
  • 357 просмотров
Подписаться 2 Простой Комментировать
Решения вопроса 1
usdglander
@usdglander
Yipee-ki-yay
Слово - это два байта или 16 бит (Как и написано).
upd: если смотреть по регистрам процессора, то
ax - слово (два байта)
ah - старшая часть регистра ах (байт)
al - младшая часть регистра ах (байт)
eax - 4х байтный регистр, младшей частью которого является регистр ax. Обратиться к старшей части регистра eax нельзя, поэтому максимальную длину регистра, которую можно разобрать на составляющие (ax) назвали словом, а eax назвали двойным словом.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
sergey-gornostaev
@sergey-gornostaev Куратор тега C
Седой и строгий
В начале было слово, и слово было два байта.
Ответ написан
GavriKos
@GavriKos
какого еще слова?

Машинного. Так и гуглите - "машинное слово". Понимание второго отрезка придет, когда поймете, что ограничивает машинное слово.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы