Wie bekomme ich die Anzahl der Bits im Typ char
?
Ich weiß über CHAR_BIT
von climits
. Dies wird beschrieben als »Das Makro liefert den maximalen Wert für die Anzahl der Bits, die zur Darstellung eines Objekts vom Typ char verwendet werden.« C-Referenz von Dikumware . Ich verstehe, dass das die Anzahl der Bits in char
bedeutet, nicht wahr?
Kann ich irgendwie mit std::numeric_limits
dasselbe Ergebnis erzielen? std::numeric_limits<char>::digits
gibt 7
korrekt zurück, aber leider, weil dieser Wert die Signedness des 8-Bit-Zeichens hier respektiert ...
Wenn Sie zu spezifisch sein möchten, können Sie dies tun:
%Vor%Wenn Sie wissen, dass Sie die Größe von Char sicher tun werden, ist es etwas übertrieben, da die Größe von (char) garantiert 1 ist.
Aber wenn Sie zu einem anderen Typ wie wchar_t wechseln, ist das wichtig.
CHAR_BIT
ist per Definition die Anzahl der Bits in der Objektdarstellung vom Typ [signed/unsigned] char
.
numeric_limits<>::digits
ist die Anzahl der Nicht-Zeichen-Bits im Wert Darstellung des angegebenen Typs.
Welchen brauchst du?
Wenn Sie nach der Anzahl der Bits in der Objektrepräsentation suchen, dann ist der richtige Ansatz, das sizeof
vom Typ zu nehmen und es mit CHAR_BIT
zu multiplizieren (es gibt natürlich keinen Sinn, mit sizeof
zu multiplizieren) im speziellen Fall von char
types, da ihre Größe immer 1 ist, und da CHAR_BIT
per Definition alredy enthält, was Sie brauchen).
Wenn Sie über Wertdarstellung sprechen, dann ist numeric_limits<>
der richtige Weg.
Bei unsigned char
type ist die Bitgröße der Objektdarstellung ( CHAR_BIT
) garantiert identisch mit der Bitgröße der Wertdarstellung, Sie können also numeric_limits<unsigned char>::digits
und CHAR_BIT
synonym verwenden, aber dies könnte aus konzeptioneller Sicht fragwürdig sein.
Tags und Links c++