For each of the standard signed integer types,
there exists a corresponding (but different)
standard unsigned integer type:
“unsignedint”, “unsignedlongint”, and
Each value x of an unsigned integer type with width N has
a unique representation x=x020+x121+…+xN−12N−1,
where each coefficient xi is either 0 or 1;
this is called the base-2 representation of x.
The base-2 representation of a value of signed integer type is
the base-2 representation of the congruent value
of the corresponding unsigned integer type.
The standard signed integer types and standard unsigned integer types
are collectively called the standard integer types, and the extended
signed integer types and extended
unsigned integer types are collectively called the
extended integer types.
A fundamental type specified to have
a signed or unsigned integer type as its underlying type has
the same object representation,
alignment requirements ([basic.align]), and
range of representable values as the underlying type.
Further, each value has the same representation in both types.
An expression of type cvvoid shall
be used only as an expression statement, as an operand
of a comma expression, as a second or third operand
of ?: ([expr.cond]), as the operand of
typeid, noexcept, or decltype, as
the expression in a return statement for a function
with the return type cvvoid, or as the operand of an explicit conversion
to type cvvoid.