Bit order == byte order??

perryh at pluto.rain.com perryh at pluto.rain.com
Fri Mar 4 09:10:38 UTC 2011


Erik Trulsson <ertr1013 at student.uu.se> wrote:
> On Thu, Mar 03, 2011 at 11:26:12AM -0500, Frank Solensky wrote:
> > In sys/netinet/ip.h, the first octet of the ip header structure
> > tests the byte ordering to determine the ordering of the header
> > length (ip_hl) and version (ip_v) fields.
> > 
> > My question: that always works?  While my reading of the
> > language specification document leaves both the ordering of
> > the bits within a byte and the bytes within a longer field as
> > implementation choices, the two are independent of each other.
> > 
> > I haven't run into a CPU where this assumption was proven
> > incorrect ...
>
> Unless you have a CPU where memory is addressed bit-by-bit rather
> than byte-by-byte the ordering of bits within a byte is not only
> completely irrelevant, it is also pretty much impossible to
> determine programatically.

Agreed it is at least difficult to determine programatically,
however it is quite important when dealing with hardware that
converts between a sequence of bytes and a bitstream, e.g.
serial ports, network interfaces, SATA ports.  Driver writers
had _better_ know which bit of the byte, as well as which
byte of a word/longword/quadword, is going on the wire first.

The O.P. is absolutely correct that bit order within a byte and byte
order within a multibyte field need not, in principle, be the same.


More information about the freebsd-questions mailing list