Java Bits

czouhon - 20 nov. 2012 à 21:58
 czouhon - 23 nov. 2012 à 20:19
Bonsoir tout le monde
j'aimerais que vous m'aidé a écrire un programme permettant d'afficher un entier comme une séquence de 32 bits
Merci pour une éventuels réponse

12 réponses

NHenry Messages postés 15114 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 4 mai 2024 159
20 nov. 2012 à 23:09
Bonjour,

Nous ne sommes pas sur ce forum pour faire vos devoirs ou autres PFE/excercices, pour plus d'explication, lisez ce sujet et celui-ci aussi.

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices.[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : ).[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualBasic (onglet Références dans les propriétés du projet).[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés/list
---
Mon site
0
Au fait voici ce que j'ai écris comme code

import java.util.Scanner;




public class lesbits {
public static void main (String []args){

Scanner sc = new Scanner(System.in);
System.out.println ("entrer le nombre");
int str = sc.nextInt();

byte[] b = new byte[4];
b[0] = (byte) (0xFF & (str >> 8 * 0));
b[1] = (byte) (0xFF & (str >> 8 * 1));
b[2] = (byte) (0xFF & (str >> 8 * 2));
b[3] = (byte) (0xFF & (str >> 8 * 3));
int entier = (b[3] << 24) | (b[2] << 16) | (b[1] << 8) | b[0];
System.out.println("la valeur en byte est"+ entier);
}
}
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
21 nov. 2012 à 10:01
Salut,

Et quel est ton problème avec ce code ?
0
je voulais dis Mon problème est que quand je rentre le nombre entier il ne me le sort pas en séquence de 32 bits
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_jojolemariole Messages postés 519 Date d'inscription mercredi 21 mars 2007 Statut Membre Dernière intervention 19 décembre 2016 25
21 nov. 2012 à 15:00
Par défaut, les entiers sont affichés en base décimale, ton affichage est donc normal.

Tu peux utiliser
Integer.toBinaryString(n)


Sinon à la main (pas vérifié si ça marchait) :
StringBuilder b1 = new StringBuilder();
for (int i = 0; i < 32; i++) {
b1.insert(0, (n & 1 << i) > 0 ? '1' : '0');
}
0
Merci jojolemariole pour ta réponse mais tu peux m'expliquer un peut ton n???
0
cs_jojolemariole Messages postés 519 Date d'inscription mercredi 21 mars 2007 Statut Membre Dernière intervention 19 décembre 2016 25
21 nov. 2012 à 22:54
"n", c'est le nombre à afficher en binaire, tu peux le remplacer par ton "str".
0
Merci Jojo pour ton aide sa marche maintenant
0
jojolemariole excuse pour le derangement si je doit calculer et afficher la valeur négatif en bite de l'entier que j'ai entré comment je peut proceder?? jai penser faire *(-1) mais sa me donne pas
0
cs_jojolemariole Messages postés 519 Date d'inscription mercredi 21 mars 2007 Statut Membre Dernière intervention 19 décembre 2016 25
22 nov. 2012 à 13:45
Essaie cette méthode :

char[] buffer = new char[32];
int i = 32;

do {
buffer[--i] = (n & 1) == 1 ? '1' : '0';
n >>>= 1;
} while (i != 0);
String binaryString = new String(buffer);


Elle devrait marcher pour les nombres négatifs.
0
cs_jojolemariole Messages postés 519 Date d'inscription mercredi 21 mars 2007 Statut Membre Dernière intervention 19 décembre 2016 25
22 nov. 2012 à 13:52
Sinon tu peux reprendre la première méthode mais en changeant un peu car 1 << 31 est en fait négatif (dans les int, oui ^^) :

StringBuilder b1 = new StringBuilder();
for (int i = 0; i < 32; i++) {
b1.insert(0, (n & 1 << i) != 0 ? '1' : '0');
}
0
Opérationnel Merci beaucoup Jojolemariole
0
Rejoignez-nous