Integer.toBinaryString în Java

Afișează biții unui int în binar sau în hexazecimal și numără câți biți de 1 are.

Sintaxă
static String toBinaryString(int i)
static String toHexString(int i)
static int bitCount(int i)   // Java 5

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, nu 00000101. Completează singur cu "0".repeat(...) sau String.format.
  • Citești înapoi un rezultat negativ cu Integer.parseInt(hex, 16): "ffffffff" este prea mare pentru parseInt. Folosește Integer.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.