52 lines
1.6 KiB
Markdown
52 lines
1.6 KiB
Markdown
[bit.endian]
|
||
|
||
# 22 General utilities library [[utilities]](./#utilities)
|
||
|
||
## 22.11 Bit manipulation [[bit]](bit#endian)
|
||
|
||
### 22.11.8 Endian [bit.endian]
|
||
|
||
[1](#1)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/utilities.tex#L16022)
|
||
|
||
Two common methods of byte ordering in multibyte scalar types are big-endian
|
||
and little-endian in the execution environment[.](#1.sentence-1)
|
||
|
||
Big-endian is a format for
|
||
storage of binary data in which the most significant byte is placed first,
|
||
with the rest in descending order[.](#1.sentence-2)
|
||
|
||
Little-endian is a format for storage of
|
||
binary data in which the least significant byte is placed first, with the rest
|
||
in ascending order[.](#1.sentence-3)
|
||
|
||
This subclause describes the endianness of the scalar types
|
||
of the execution environment[.](#1.sentence-4)
|
||
|
||
[ð](#lib:endian)
|
||
|
||
`enum class endian {
|
||
little = see below,
|
||
big = see below,
|
||
native = see below
|
||
};
|
||
`
|
||
|
||
[2](#2)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/utilities.tex#L16044)
|
||
|
||
If all scalar types have size 1 byte, then all of endian::little,endian::big, and endian::native have the same value[.](#2.sentence-1)
|
||
|
||
Otherwise, endian::little is not equal to endian::big[.](#2.sentence-2)
|
||
|
||
If all scalar types are big-endian, endian::native is
|
||
equal to endian::big[.](#2.sentence-3)
|
||
|
||
If all scalar types are little-endian, endian::native is
|
||
equal to endian::little[.](#2.sentence-4)
|
||
|
||
Otherwise, endian::native is not equal
|
||
to either endian::big or endian::little[.](#2.sentence-5)
|