2012-04-04 12 views
0
int64_t maskTestNum = (1ll << 63); 

könnte jemand erklären, warum dies als der Wert unten druckt?seltsames Bit Verschiebung Ergebnis

-9223372036854775808

Ich denke, der absolute Wert ist richtig, aber warum das Minuszeichen?

+3

Äh, es ist eine vorzeichenbehaftete Nummer, und Sie haben in das Zeichen Bit verschoben? –

+0

OK, ta ... wusste nichts über das signierte Bit, macht aber Sinn. – Remover

Antwort

2

Verwenden Sie stattdessen eine Ganzzahl ohne Vorzeichen: uint64_t.

Verwandte Themen