2017-03-24 1 views
0

Say, j'ai une chaîne binaire commelongue à chaîne binaire 64 bits et l'ajouter à la matrice de 8x8

11110001000010100000011000000110000001100000010100001000111100 

il est 62 bits, et je veux que ce soit 64

0011110001000010100000011000000110000001100000010100001000111100 

je peux l'imprimer en 64, mais comment l'enregistrer pour l'ajouter au tableau?

for(int i = 0; i < Long.numberOfLeadingZeros((long)num); i++) { 
      System.out.print('0'); 
     } 
     System.out.println(Long.toBinaryString((long)num)); 

Je veux aussi ajouter dans le tableau 2D afin que je puisse l'afficher comme 8x8

00111100 
01000010 
10000001 
10000001 
10000001 
10000001 
01000010 
00111100 

Ceci est mon code pour l'ajouter au tableau,

for(int i = 0; i < bin1.length(); i++){ 
      for(int j = 0; j < 8; j++){ 
       for(int z = 0; z < 8; z++){ 
        table[j][z] = bin1.charAt(i); 
       } 
      } 
     } 

mais quand Je l'imprime, il imprime juste 0 s.

00000000 
00000000 
00000000 
00000000 
00000000 
00000000 
00000000 
00000000 
+0

Chaque itération de la boucle la plus externe remplit toutes les cellules de la table la charte (i). – roby

Répondre

4

vous allez ici:

long num = 4342175383962075708L; 
char[][] table = new char[8][8]; 
String bin1 = Long.toUnsignedString(num, 2); 

while(bin1.length()<64){ 
    bin1="0"+bin1; 
} 
//Store the bits in the array 
int i=0; 
for(int j = 0; j < 8; j++){ 
    for(int z = 0; z < 8; z++){ 
     table[j][z] = bin1.charAt(i++); 
    } 
} 
//Print the numbers 
for(char[] m : table){ 
    for(char n : m){ 
    System.out.print(n); 
    } 
    System.out.println() 
} 
+0

S'il vous plaît, d'abord expliquer ce qui s'est mal passé et ensuite fournir la solution. Cela aidera les autres à mieux comprendre. Merci! –

+0

pouvez-vous s'il vous plaît expliquer. – rashedcs

0

en utilisant ci-dessous pour enregistrer comme tableau 2D que vous voulez:

int j=0,z =0; 
for(int i = 0; i < Long.numberOfLeadingZeros((long)num); i++) { 
     System.out.print('0'); 
     table[j][z++] = '0'; 
     if(z>7){ 
      j++; 
      z=0; 
     } 
} 

String a = Long.toBinaryString((long)num); 
for(int g = 0; g < a.length(); g++){ 
     table[j][z++] = a.charAt(g); 
     System.out.print(a.charAt(g)); 
     if(z>7){ 
      j++; 
      z=0; 
     } 
    } 
    System.out.print("\n"); 
    for(int k = 0; k < 8; k++){ 
     for(int s = 0; s < 8; s++){ 
      System.out.print(table[k][s]); 
     } 
     System.out.print("\n"); 
    } 
}