0x для 8 бит, что используется для 7 бит?

881
Cool Javelin

Я пишу техническую документацию и описываю формат для 7-битного режима адресации I2c. Это также относится к 7-битному кодированию ASCII, но это примечание.

I2c использует 7 бит (или 10 битов, которые здесь не обсуждаются) для адресации подчиненного устройства. За 7-битным адресом следует еще один бит, чтобы подчиненный мог прочитать или записать.

Восемь битов передаются при отправке адреса, но в действительности это 7 бит плюс бит направления (R / w #).

Мой вопрос: если 0x используется для описания 16-битного, шестнадцатеричного, восьмибайтового байта, что используется для описания семнадцатеричного байта (пятнадцатеричного?) 15-го числа? Может быть, слово байт здесь тоже неверно.

Я знаю, что 0x также используется для описания 16-битных слов, но логически они на самом деле представляют собой два 8-битных байта вместе, поэтому 0x чувствует себя хорошо.

Примечание: здесь я получил слово quindecimal http://mathforum.org/library/drmath/view/60405.html

Отметка.

-4
Биты двоичные. 0x - это шестнадцатеричное, а не двоичное. Это просто карта хорошо, потому что это сила двух. Daniel B 7 лет назад 1
О да, и одна шестнадцатеричная цифра отображается в 4 бита, а не в 8. Поэтому я совершенно не понимаю, чего вы пытаетесь достичь. Daniel B 7 лет назад 0
Вы путаете количество бит с основанием (он же база). * «Я пишу некоторую техническую документацию ...» * - Тогда вам нужно использовать правильную пунктуацию для * «7-битной кодировки» *. Это не «7-битная кодировка» или «битовая кодировка», а «7-битная кодировка» (т.е. «7» и «бит» идут вместе, так что это дефис). sawdust 7 лет назад 2
Вы должны использовать шестнадцатеричную нотацию и дать понять, что значения являются 7-битной кодировкой, чтобы сделать вашу документацию проще для чтения. Шестнадцатеричный существует для нас, людей, компьютер не заботится. Компьютер будет хранить значение в регистре определенного размера, даже если сохраняемая 7-битная структура данных хранит только 7-битную Ramhound 7 лет назад 0

2 ответа на вопрос

2
David Schwartz

Вы не совсем правы. Мы используем 0xдля обозначения чисел, выраженных в шестнадцатеричном, основание 16. Это прекрасно использовать 0xперед числами любой длины, если вы выражаете их в основании 16.

Если вы видите «0x1», это все равно, что видеть 1. Это может быть один бит. Это может быть байт. Это может быть произвольной длины. Никакая конкретная длина не подразумевается "0x".

2
Tonny

Base15 не означает 7-битный байт. Понятия не имеют никакого отношения ...

7-битный байт - это просто так. Байт, в котором старший бит не используется.
Нет ничего плохого в использовании шестнадцатеричной записи с префиксом 0x для отображения значений, хранящихся в таких 7-битных байтах, при условии, что вы даете понять, что допустимы только 7 бит. (Другими словами: от 0x0 * до 0x7 *, цифры от 0x8 * и выше не используются.)

Насколько мне известно, нет никаких специальных обозначений для этого.
Я программирую уже более 30 лет, и в те времена эти 7-битные системы встречались гораздо чаще, чем сегодня. Если бы для этого было специальное обозначение, я бы столкнулся с ним в какой-то момент, но никогда не встречал.

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