Poiché SE 7 Java consente di specificare valori come valori letterali binari. La documentazione dice che 'byte' è un tipo che può contenere 8 bit di informazione, i valori da -128 a 127.Letterali binari Java - Valore -128 per byte
Ora non so perché, ma non posso definire 8 bit ma solo 7 se provo ad assegnare un binario letterale a un byte in Java come segue:
byte b = 0b000_0000; //solves to the value 0
byte b1 = 0b000_0001; //solves to the value 1
byte b3 = 0b000_0010; //solves to the value 2
byte b4 = 0b000_0011; //solves to the value 3
E così via finché arriviamo agli ultimi possibilitys usando quei 7 bit:
byte b5 = 0b011_1111; //solves to the value 63
byte b6 = 0b111_1111; //solves to the value 127
Se voglio renderlo numeri negativi dEVO aggiungi un davanti - davanti in questo modo:
byte b7 = -0b111_1111; //solves to the value -127
Ora metà del problema che ho è che uso solo 7 bit per descrivere quello che mi dicono è un tipo di dati a 8 bit. La seconda metà è che non sembrano essere threaded come complemento a meno che non si usi un tipo int a 32 bit dove posso definire tutti i 32 bit ("bit indicatore di segno" incluso).
Ora, quando faccio una ricerca su come visualizzare l'in-intervallo di numeri -128 mi è stato detto di farlo in questo modo, senza alcuna ulteriore spiegazione:
byte b8 = 0b1111_1111_1111_1111_1111_1111_1000_0000;
posso vedere chiaramente che l'ultimo 8 Bit (1000 0000) non rappresentano -128 a due a due compelment usando 8 bit, ancora non sono mai stato confuso di più e provare a chiedere le mie domande:
- Isnt quanto sopra 32 bit lungo nr 32 bit (java-) int valore?
- Perché è possibile assegnare un valore a 32 bit a un tipo di byte a 8 bit (java-)?
O in generale: Perché devo assegnarlo in questo modo?
Qualsiasi link/informazioni su questo sarebbe fantastico! Grazie per il tempo che hai dedicato a leggere questo e altre informazioni in anticipo.
saluti gen
fa 'byte B8 = lavoro 0b1000_0000', cercare anche fino complemento rappresentazione binaria 2 del –
No byte B8 = 0b1000_0000 non funziona, purtroppo ho perso il focus scientifico su questa domanda, ma penso che questo si prevede di non funzionare. Interessante tuttavia che non c'è mai stata una risposta completa su questa domanda, è necessario verificare come impostare un premio su di esso. – JBA