CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[JAVA] Décimal a binaire

128mo
128mo
Niveau 7
20 octobre 2012 à 15:09:22

Salut :)
Je débute en programmation et je dois faire un programme qui convertit un nombre décimal en binaire, ça donne ça :

public class Binaire {
static Scanner sc = new Scanner (System.in) ;
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub

int a, y = 0, i = 1, q, r ;
System.out.print("donnez une valeur : ") ;
a = sc.nextInt () ;

while (a!=0)
{
q = a/2 ;
r = a%2 ;
y = y + (r*i) ;
i = i*10 ;
a = q ;
}

System.out.print(y) ;

}

}

Mais pour la valeur 1234 il me sort 1421075418 :( Je pense que ça vient de mon algorithme mais j'ai beau tout retourner je ne trouve pas :( quelqu'un peut m'éclairer ?

Chocolayte
Chocolayte
Niveau 73
21 octobre 2012 à 01:26:24

Ton algorithme est bon. ^^
1234 donne 10011010010, soit plus de 10 milliards. Les int ne dépassent pas 32 767. Soit tu modifies ton code afin de rentrer chaque résultat de r=a%2 dans un tableau y[] au fur et à mesure, soit tu utilises autre chose que du int.

Chocolayte
Chocolayte
Niveau 73
21 octobre 2012 à 03:32:19

En fait, tu peux convertir au maximum le décimal 1023 (1 111 111 111), donc c'est pas ça, mes excuses. ^^"

Tikim
Tikim
Niveau 21
21 octobre 2012 à 09:11:11

Les int peuvent dépasser 2^15 hein :o)) Tout dépend de la taille de l'int dans le contexte. Mais actuellement je pense qu'il n'y a pas beaucoup de PC qui ont des int limités à 2^15.

Fais le test avec un sizeof(int) en C, ou l'équivalent Java, tu verras :ok:

Chocolayte
Chocolayte
Niveau 73
21 octobre 2012 à 09:58:06

J'ai 2147483647 pour un int max. :o))
Donc si, 1023 < int max < 1024, c'est bien ça. J'avais essayé hier de remplacer tes int par des unsigned long long mais j'ai galéré pour les calculs.

Tikim
Tikim
Niveau 21
21 octobre 2012 à 11:39:18

1023 < int max < 1024

:d) Quoi ?

Pas compris là. Un int peut faire un certain nombre d'octets, ce qui change selon où tu l'utilises. Donc suivant le nombre d'octet qu'il occupe, il pourra prendre une valeur plus ou moins grande.

Chocolayte
Chocolayte
Niveau 73
21 octobre 2012 à 12:23:09

J'voulais dire que 1023 a pour équivalent 1 111 111 111 (un milliard) et 1024 a pour équivalent 10 000 000 000 (dix millards). En utilisant des int, on se retrouve donc avec le cas de figure :

1023(2) < int max < 1024(2), soit 1 111 111 111 < 2147483647 < 10 000 000 000. Le nombre à convertir est trop important pour le type de variable utilisé.

Tikim
Tikim
Niveau 21
21 octobre 2012 à 18:43:53

Ah oui vu comme ça en effet :o))

Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment