Besoin d'aide pour la comprehension d'un script

Besoin d'aide pour la comprehension d'un script - Java - Programmation

Marsh Posté le 13-09-2013 à 20:03:22    

Bonjour,  
 
je dois pour les cours écrire une fonction qui transforme un entier donné en argument un binaire (sur 1 octet). Hors, j'avais il y a quelques  temps déjà utilisé une fonction comme ça, mais à l'époque je n'avais pas pris la peine de la comprendre, car c'était pas vraiment de mon niveau (en fait, je n'avais pas appris le décalage de bits). Bref, un forumeur m'avais donné un bout de code fonctionnel, donc c'était tout bon, mais j'aimerais maintenant qu'on m'aide à le comprendre !  
 
Voilà la fonction en question :  
 

Code :
  1. public static int[] entierToBinaire(int ent){
  2.  int res[] = new int[8];
  3.  for(int i=0; i<8; i++){
  4.   res[i] = ((ent >> i) & 0x01);
  5.  }
  6.  return res;
  7. }
  8. public static void main(String argv[]){
  9.  for(int i=0; i<8; i++){
  10.   System.out.print(entierToBinaire(64)[i]);
  11.  }
  12. }
  13. }


Je ne comprend vraiment pas le fait, de diviser par une puissance nième de deux à chaque itérations et surtout, le but du ET logique entre le résultat du décalage et 0x01.
Si quelqu'un pouvait m'expliquer, ça serai super !  

Reply

Marsh Posté le 13-09-2013 à 20:03:22   

Reply

Marsh Posté le 13-09-2013 à 22:11:29    

ent, il est déjà en binaire. Ta conversion, en fait, elle convertit un entier (en binaire) en tableau d'entiers valant 0 ou 1 représentant les bits binaires de ent.
ent >> i decale de i bits vers la droite.  
& 0x01 masque tous les bits sauf le premier
 
exemple:
ent = 10,  
Donc en binaire ent c'est 00001010
i = 0  ent >> i c'est 00001010 et (ent >> i ) && 0x01 c'est 00000000 soit 0 donc res[0] = 0
i = 1  ent >> i c'est 00000101 et (ent >> i ) && 0x01 c'est 00000001 soit 1 donc res[1] = 1
i = 2  ent >> i c'est 00000010 et (ent >> i ) && 0x01 c'est 00000000 soit 0 donc res[2] = 0
i = 3  ent >> i c'est 00000001 et (ent >> i ) && 0x01 c'est 00000001 soit 1 donc res[3] = 1
i = 4  ent >> i c'est 00000000 et (ent >> i ) && 0x01 c'est 00000000 soit 0 donc res[4] = 0
...........
i = 7  ent >> i c'est 00000000 et (ent >> i ) && 0x01 c'est 00000000 soit 0 donc res[7] = 0
 
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed