2012-01-21 8 views
6

Per questo esempio, creo un intero.Chiamiamo il primo bit in un byte bit 1 o 0?

int example = 0; 

Ora diciamo che voglio sapere qual è il primo bit di questo intero. So che sarebbe al bit position 0. Ma dovrei chiamarlo bit 1 o 0. La ragione per cui lo chiedo è perché ho visto la documentazione in cui il primo bit di un intero è etichettato come bit 0 e poi etichettato come bit 1. So che è un errore da parte loro, solo curioso di sapere a cosa dovrei riferirmi come.

+2

Risposta di battuta: se gli array nella lingua scelta iniziano dall'indice 1, allora è il 1 ° bit, altrimenti è il 0 ° bit. – Charles

+0

Chiamalo come vuoi, ma semplicemente documenta la tua convenzione. –

+0

A volte le persone numerano anche i bit nella direzione opposta, quindi il bit * più * significativo è 0 o 1. Documenta la tua convenzione e segui la stessa. –

risposta

8

maggior parte del tempo, il bit più basso-ordine chiamato po 0.

Tuttavia, in realtà dipende dal contesto si chiede in. Ho lavorato su due sistemi differenti (interconnessi), quando la sua documentazione lo chiamava bit 1, e l'altro lo chiamava bit 0. Parla di confusione! L'importante è qualificare sempre qualcosa se la documenti.

In genere, questo viene chiamato "-indice". Quindi se il bit di ordine più basso è chiamato "bit zero", allora il bitfield è "zero-indexed".

Personalmente, mi riferisco sempre al bit di ordine più basso come bit zero. Con questa convenzione, è possibile spostare un 1 n luoghi, per accendere la n esimo bit:

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

Grazie in particolare per l'esempio. Ha senso avere i bit allineati durante le operazioni a livello di bit. –

2

se si va semplicemente potenze di due, 2 ** 0 è 1. Ha più senso per numerare il bit a partire da 0.