Ce face Integer.toBinaryString
toBinaryString(i) returnează reprezentarea binară, fără zerouri în față: 5 devine "101". toHexString(i) face același lucru în baza 16, cu litere mici (255 → "ff"), des folosit pentru culori și coduri.
Numerele negative sunt tratate fără semn: se afișează toți cei 32 de biți din reprezentarea în complement față de doi. De exemplu -1 devine 32 de cifre de 1, iar în hexazecimal ffffffff.
bitCount(i) numără biții setați pe 1. Este util când un număr ține mai multe opțiuni de tip da/nu (permisiuni, zile din săptămână) și vrei să afli câte sunt active.
Parametri
| Parametru | Descriere |
|---|---|
i |
Numărul întreg. |
Ce returnează
toBinaryString, toHexString: un String. bitCount: un int între 0 și 32.
Exemple
Exemplul 1: Binar, hexazecimal și numărul de biți
public class Main {
public static void main(String[] args) {
int[] numere = {5, 12, 255, -1};
for (int n : numere) {
System.out.println(n + ": binar " + Integer.toBinaryString(n)
+ ", hex " + Integer.toHexString(n)
+ ", biți de 1: " + Integer.bitCount(n));
}
}
}
Rezultat
5: binar 101, hex 5, biți de 1: 2
12: binar 1100, hex c, biți de 1: 2
255: binar 11111111, hex ff, biți de 1: 8
-1: binar 11111111111111111111111111111111, hex ffffffff, biți de 1: 32
Exemplul 2: O culoare în format web
Componentele roșu, verde și albastru sunt lipite într-un singur int; toHexString îl afișează ca în CSS.
public class Main {
public static void main(String[] args) {
int rosu = 0, verde = 43, albastru = 127;
int culoare = (rosu << 16) | (verde << 8) | albastru;
String hex = Integer.toHexString(culoare);
System.out.println("#" + "0".repeat(6 - hex.length()) + hex);
}
}
Rezultat
#002b7f
Exemplul 3: Zilele de program într-o mască de biți
Bitul 0 este luni, bitul 6 este duminică. bitCount spune câte zile sunt bifate.
public class Main {
public static void main(String[] args) {
String[] zile = {"luni", "marți", "miercuri", "joi", "vineri", "sâmbătă", "duminică"};
int program = 0b0011111;
System.out.println("Mască: " + Integer.toBinaryString(program));
System.out.println("Zile lucrătoare: " + Integer.bitCount(program));
for (int i = 0; i < zile.length; i++) {
if ((program & (1 << i)) != 0) {
System.out.print(zile[i] + " ");
}
}
System.out.println();
}
}
Rezultat
Mască: 11111
Zile lucrătoare: 5
luni marți miercuri joi vineri
Greșeli frecvente
- Te aștepți la zerouri în față:
toBinaryString(5)dă101, nu00000101. Completează singur cu"0".repeat(...)sauString.format. - Citești înapoi un rezultat negativ cu
Integer.parseInt(hex, 16):"ffffffff"este prea mare pentruparseInt. FoloseșteInteger.parseUnsignedInt.
Comenzi înrudite
Integer.toString: Transformă un număr întreg în text, în baza 10 sau în orice bază între 2 și 36.Integer.parseInt: Transformă un text ca „42” în numărul întreg 42; valueOf face același lucru, dar returnează un obiect Integer.Integer: Clasa wrapper pentru int: obiectul care învelește un număr întreg, plus constante și metode de conversie.Operatori: Operatorii aritmetici, de comparație, logici, de atribuire, ternar și pe biți din Java, cu ordinea lor de evaluare.