ich eine dritte Partei Quellcode Scannen Findbugs mit (nur vorsichtig zu sein, in sie, bevor die Integration von mir), und fanden die folgende Warnung:Findbugs Warnung: Ganzzahlverschiebung um 32 - was bedeutet das?
long a = b << 32 | c
Bug: Integer Verschiebung um 32 Muster-ID: ICAST_BAD_SHIFT_AMOUNT Typ: BSHIFT, Kategorie: KORREKTHEIT
der Code führt eine ganzzahlige Verschiebung um eine konstante Menge außerhalb des Bereichs 0..31. Dies hat zur Folge, dass die unteren 5 Bits des ganzzahligen Werts verwendet werden, um zu entscheiden, um wie viel verschoben werden soll. Diese wahrscheinlich ist nicht erwartet wurde, und es zumindest verwirrend.
Könnte jemand bitte erklären, was genau das oben genannte bedeutet?
Danke! (Ich bin ein ziemlich Neuling in Java-Programmierung)
So,' int >> 32 (0x100000) == int >> 0 (0x00000) '? –
Seltsame Pseudo-Syntax, die Sie verwenden, aber ja, das ist es. – UndefinedBehavior