least significant bit einer HexMaske für Bitshift ermitteln

chalkbag

Bekanntes Mitglied
Guten Abend zusammen,

ich habe einen HexMaske für eine binäre xor Opertation. Anhand der Maske möchte ich einen Bitshift um die Stellen von Rechts bis zur ersten Eins nach Rechts verschieben.

Vielleicht Anschaulich:

Maske: 0x20 (Binär 10100)
Wert: 11101

Operation

Xor: Maske & Wert = 10100
Shift: Wert >> 2 = 00101

Wichtig in Java ist mir erstmal nur wie ich herausfinde um wieviel Stellen ich den Shift durchführen soll. Momentan mach ich das in etwa so.

Java:
String mask = "20";
int maskInt = Integer.parseInt(mask);
mask = Integer.toBinaryString(maskInt);
int lsb = 0;
for(int i = mask.length()-1;  i > 0; i --){
     if (mask.charAt(i) == '0'){
          lsb++;
      }else{
           break;
      }
  }
//shift um lsb

Eigentliche Frage, geht das nicht irgendwie eleganter? Insbesonder der Schleifenzähler gefählt mir momentan eher weniger.

Grüße
 
Wenn du es eh schon als String hast vlt
Java:
int lsb = mask.length()-mask.lastIndexOf('1')-1;

🙂
 

Neue Themen


Zurück
Oben