Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    Satmpa di un numero in binario con Java

    Come faccio a stampare un long come sequenza di 16 bit?

    Es. n=0; in stampa dovrei ottenere 000000000000000
    e così via...

    Grazie a tutti!

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Satmpa di un numero in binario con Java

    Originariamente inviato da Vincent
    Come faccio a stampare un long come sequenza di 16 bit?

    Es. n=0; in stampa dovrei ottenere 000000000000000
    e così via...
    Long.toBinaryString() oppure Long.toString() specificando radice 2. C'è una differenza tra i due per quanto riguarda i numeri negativi!!! (prova entrambi e capirai )
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Ci avevo provato già, ma mi prende solo i bit che servono a lui...

    Mi spiego: se n=10; stampa 1010... a me serve così: 0000000000001010
    se n=0; stampa 0 e non 0000000000000000

    Come faccio a forzare che la stampa sia a 16 bit?

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Vincent
    Come faccio a forzare che la stampa sia a 16 bit?
    Gli zeri non significativi non li inserisce!!

    a) Li aggiungi tu
    b) Non usi i metodi sopra citati ma fai un "tuo" metodo che esamina bit x bit e genera la stringa di 0/1 (e non è affatto difficile!).
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Gli zeri non significativi non li inserisce!! a) Li aggiungi tu b) Non usi i metodi sopra citati ma fai un "tuo" metodo che esamina bit x bit e genera la stringa di 0/1 (e non è affatto difficile!).
    Come??? :master:

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Vincent
    Come??? :master:
    La soluzione più stupida (nel senso di banale ... poco efficiente):

    codice:
    String str = Long.toBinaryString(numero);
    
    while (str.length() < 64) {
        str = "0" + str;
    }
    Una soluzione elegante:
    codice:
    public static String longToBinStr(long val) {
        char[] buf = new char[64];
    
        for (int i = 0; i < 64; i++, val>>>=1) {
            buf[63-i] = (val & 1) != 0 ? '1' : '0';
        }
    
        return new String(buf);
    }
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.