HACKING 120% {Hacking, programmazione, computer & molto altro}

[supporto] schemi di bit

« Older   Newer »
  Share  
Nessuno
view post Posted on 18/2/2014, 19:16     +1   -1




Ciao a tutti,
Come da titolo avrei bisogno di aiuto su un concetto che riguarda gli schemi di bit.
nel libro sono arrivato agli operatori logici a livello di bit (NOT,AND,OR e XOR) e fin qui tutto bene ma in un esempio di programma dove mostra gli operatori logici c'è una frase di cui non ho capito bene il concetto, vi riporto una parte del programma:

class BitLogic {
public static void main(String args[]) {
String binary[] = {
"0000" "0001" "0010" "0011" "0100" "0101" "0110" "0111"
"1000" "1001" "1010" "1011" "1100" "1101" "1110" "1111"
};
int a = 3; // 0 + 2 + 1 o 0011 in binario
int b = 6; // 4 + 2 + 0 o 0110 in binario
....
}
}
io non riesco a capire il concetto di quei due commenti in a e b, cioè la parte 0 + 2 +1 e la parte 4 + 2 + 0.

dopo l'esempio del programma l'autore scrive: " nell'esempio a e b hanno schemi di bit che presentano tutte le quattro possibilità per due cifre binarie: 0-0,0-1,1-0 e 1-1."

potreste aiutarmi? :wacko:
Grazie :D
 
Top
RootkitNeo
view post Posted on 21/2/2014, 00:10     +2   +1   -1




Con i commenti vuole dirti che il numero 3 corrisponde al numero binario 011 e che il numero 6 corrisponde a 0110. Quindi visto che il sistema binario sono le potenze di due, per trasformare il numero 011 in decimale devi considerare che ogni cifra ha un peso differente, ed è appunto una potenza di due. Quindi partendo da destra avrai 2^0=1 poi 2^1=2 per un totale quindi di 1+2=3.
Con il 6 a sua volta avrai:
(partendo sempre da destra)
0110 = 0*20 + 1*21 + 1*22 + 0*23 = 0*1 + 1*2 + 1*4 + 0*8 = 0 + 2 + 4 + 0

Io ho tenuto conto dello 0 iniziale, se non lo conti non avrai quello 0*8, ma il succo è il medesimo in quanto come vedi il risultato non cambia.
E' importante che ti ricordi sempre di contare a partire da destra, altrimenti il peso delle cifre cambia, e di conseguenza ricavi un risultato errato.
Il libro può darti la sensazione di partire da sinistra, in realtà ti sta solo dicendo il valore che hanno quei singoli bit: il bit 1 posto a sinistra ha valore 4 (se conti a partire da destra lo vedi, in quanto è 2^2), quello vicino a lui vale 2. Da questo puoi anche dedurre che per convertire un numero da binario a decimale è sufficiente considerare le cifre che hanno il bit 1 e non quelle con il bit 0; questo perchè come ti ho mostrato quando converti devi elevare il numero alla posizione in cui si trova la cifra, ma devi anche moltiplicare per la cifra che si trova in tale posizione (e calcolare quelle dove c'è 0 è inutile, tanto poi viene moltiplicato per 0 ed otterresti appunto 0).

Spero sia chiaro, se non lo sono stato mi rispiego.
 
Top
Nessuno
view post Posted on 21/2/2014, 07:48     +1   -1




Grazie Root sei stato chiarissimo :D
 
Top
RootkitNeo
view post Posted on 21/2/2014, 13:10     +1   -1




Prego, mi fa piacere. ;)
 
Top
3 replies since 18/2/2014, 19:16   53 views
  Share