2016-05-16 11 views
4

Ich bin ein Java-Noob also bitte mit mir ertragen, wenn ich mein Problem nicht sehr gut erkläre.extrahiere die letzten 2 Bits in binär

Also die Zahl 254 ist 11111110 in binär. Mein Problem ist, ich möchte die letzten 2 Bits (10) greifen. Mir wurde gesagt, dass ich den Operator% verwenden soll, aber ich weiß nicht wie. Kann mir jemand bei diesem Problem helfen?

+2

Wie möchten Sie sie "greifen"? Sie möchten eine "Zeichenfolge" "10" oder eine Zahl "2" erhalten? –

+0

Ich muss die Methode so schreiben, dass die folgenden in main korrekt sind: result = getLeastSignificant2 (255); System.out.println ("Das Ergebnis von getLeastSignificant2 (255) ist" + result); if (Ergebnis == 3) { System.out.println ("Das ist korrekt!"); } else { System.out.println ("Das ist FALSCH! Sollte 3 sein"); } – dye

Antwort

4

Angenommen, Sie möchten den numerischen Wert der letzten zwei Binärziffern erhalten, können wir eine Maske verwenden.

public static void main(String[] args) { 
    int n = 0b1110; 
    int mask = 0b11; 
    System.out.println(n & mask); 
} 

der Code Was tut die Zahl nimmt in diesem Fall 0b1110 und eine and mit der Maske zu tun definiert 0b11.

0b ist, wie Sie Java sagen, dass Sie die Zahl als binär ausdrücken.

Falls Sie die Binärzahl als binäre erhalten möchten, können Sie diese verwenden: Integer.toBinaryString(n & mask)

0

Die letzten beiden Bits, indem Sie x % 4 erhalten werden kann, oder durch x & 3 tun.

x % 4 ist Rest nach Division durch 4, die eine Zahl 0 - 3, wie durch die letzten zwei Bits dargestellt.

x & 3 ist eine bitweise UND-Operation mit der Binärzahl 11, d. H. Nullsetzen aller anderen Bits.

Die zweite ist in der Regel die schnellste zur Laufzeit und die bevorzugte Methode zur Bit-Manipulation. (Verwenden Sie eine bitweise Operator für Bit-Manipulation, nicht wahr?)

+0

x & 3 funktioniert nur für 255, aber was, wenn ich die letzten 2 Bits von 64 bekommen wollte? – dye

+0

@dye '64 & 3 == 0'. "64" (dezimal) ist "01000000" (binär) und die letzten 2 Bits sind "00". Welcher Teil verwirrte dich? – Andreas

+0

Entschuldigung, du hast Recht! Vielen Dank! – dye

Verwandte Themen