2012-01-21 9 views
6

Para este ejemplo, creo un número entero.¿Llamamos al primer bit en un bit de bytes 1 o 0?

int example = 0; 

Ahora digamos que quiero saber cuál es el primer bit de este entero. Sé que estaría en la posición de bit 0. Pero, ¿lo llamaría bit 1 o 0. La razón por la que pregunto es porque he visto documentación donde el primer bit de un entero se etiqueta como bit 0 y luego se etiqueta como bit 1. Sé que es un error de su parte, solo curiosidad por saber a qué me refiero.

+2

Broma respuesta: Si las matrices en el idioma de su elección comienzan en el índice 1, entonces es el 1er bit, de lo contrario, es el 0º bit. – Charles

+0

Llámalo como quieras, pero solo documenta cuál es tu convención. –

+0

A veces las personas también numeran los bits en la dirección opuesta, por lo que el bit * más * significativo es 0 o 1. Documente su convención y apéguese a ella. –

Respuesta

8

mayoría de las veces, el bit de orden más bajo se llama bit 0.

Sin embargo, lo que realmente depende del contexto en el que lo pide. He trabajado en dos sistemas diferentes (interconectadas), cuando la documentación de uno lo llamó el bit 1, y el otro lo llamó bit 0. ¡Hable de confuso! Lo importante es siempre calificar algo si lo documenta.

Por lo general, esto se llama "-indexed". Entonces, si el bit de orden más bajo se llama "bit cero", entonces el bitfield está "indexado en cero".

Personalmente, siempre me refiero al bit de menor orden como bit cero. Con esta convención, se puede cambiar a 1 n lugares, para encender la n ésimo bit:

x = 1<<0; 00000001b (bit 0 is on) 
x = 1<<4; 00010000b (bit 4 is on) 
+0

Gracias especialmente por el ejemplo. Tiene sentido tener los bits alineados mientras se realizan operaciones a nivel de bit. –

2

si vas simplemente por potencias de dos, 2 ** 0 es 1. Tiene más sentido a contar el bits comenzando en 0.