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

[Bits] Limite ?

ScientificBird
ScientificBird
Niveau 9
25 octobre 2014 à 16:25:59

Vous savez, c'est quand on doit utiliser une notion basique que l'on se rend compte qu'on ne la maîtrise pas en fait :pf:
Je dois faire - au classique - un prog Java qui convertit des nombres de la base 2 à la base 10. Wow.

Ok bon l'algo en lui même je l'ai en tête, avec ma classe scanner tableau et mes boucles. Ok. Sauf que, j'ai un doute. L'utilisateur va remplir mon tableau avec ses entrées, merci Scanner.

Le truc c'est que je dois forcément définir la taille de mon tableau (non je n'ai pas droit aux objets List). Donc ma question : A quelle taille dois-je le définir ?

(Je reprécise que l'utilisateur entre un nombre en base 2, dont chaque termes rentrent dans une case du tableau. Vous voyez le topo). Franchement, entre 256 et 64, je ne sais pas, c'est bidesque et basique, pourtant je suis coincé :rire:

Help, merci d'avance :)

[denshaotoko]
[denshaotoko]
Niveau 25
25 octobre 2014 à 17:10:19

256 cases ça fait beaucoup quand même, puisque après tu vas devoir convertir ton nombre en base 10, donc déjà ça peut dépasser 2^32, et je ne pense pas que ce soit demander de gérer les BigInter d'après ce que tu dis, puis aussi je pense pas que tu veuilles avoir à demander à l'utilisateur d'entrer 256 fois des 0 et des 1

ce que tu peux faire, c'est utiliser un tableau de 32 cases pour ne pas devoir à t'élargir à la gestion de BigInteger, mais seulement te baser sur la gestion complète des valeurs des Integer pour pouvoir gérer la conversion de

10000000000000000000000000000000 -> Integer.MIN_VALUE

jusque

01111111111111111111111111111111 -> Integer.MAX_VALUE

ScientificBird
ScientificBird
Niveau 9
25 octobre 2014 à 18:33:59

Hap : Moi non, mais c'est visiblement ce que veut le prof vu qu'on a consigne de n'utiliser que des boucles et un ou plusieurs tableaux, sans rien d'autre :hap:

Bunyan
Bunyan
Niveau 17
25 octobre 2014 à 19:27:13

Sauf que la logique voudrait que l'on passe par une String pour entrer le nombre en base 2 à convertir, et ensuite soit utiliser des primitives du langage, soit appliquer un algo dessus pour les transformer en base 16.

A la limite, je vois l'utilité d'un tableau pour stocker les valeurs { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F } et y accéder facilement dans le cas d'une conversion à la main en passant par la base 10.

ScientificBird
ScientificBird
Niveau 9
25 octobre 2014 à 19:35:23

Bunyan : C'est à dire ? Enfin, pourquoi utiliser de l'hexadecimal ? :doute:

Bunyan
Bunyan
Niveau 17
25 octobre 2014 à 19:38:23

Ah merde. J'ai confondu avec un autre sujet... J'ai lu "base 2 à base 16". Mes excuses.
Dans la transformation base 2 à base 10, strictement aucun intérêt pour un tableau.

ScientificBird
ScientificBird
Niveau 9
25 octobre 2014 à 20:36:23

"Il vous faudra utiliser les tableaux et les structures répétitives"

Bah. Comment fais tu sans tableau, si je peux me permettre ? Tu utilises l'objet List c'est ça ?

[-Shana-]
[-Shana-]
Niveau 10
25 octobre 2014 à 22:52:40

Une chaîne de caractère c'est un tableau de char hein :oui: ....

LeuNoeleeste
LeuNoeleeste
Niveau 10
26 octobre 2014 à 00:01:37

Arrêtons de nous noyer dans un verre d'eau. L'auteur, tu fais ça :

---------------------------------------

import java.util.Scanner;
public class tast {

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);
System.out.print("Veuillez saisir un nombre : ");
int n = sc.nextInt();
int d = 0; // decimal representation
int i = 0; // power we're going to raise n to
while (n != 0) {
int r = (int)(n % 10); // remainder
if (r != 0)
d += (int)Math.pow(2, i); // raise 2 to the i and add it to the sum
++i;
n /= 10; // reduce n

}

System.out.println("On a : "+d);
}

}
--------------------------------

Utiliser un tableau là dedans c'est juste une perte de temps. Et si ton prof remet ça en question il peut également faire de même avec son statut de prof :noel:

LeuNoeleeste
LeuNoeleeste
Niveau 10
26 octobre 2014 à 00:42:43

Je n'allais pas ajouter les exceptions à gérer non plus :noel:
Non mais d'habitude je ne donne pas de code, là l'auteur cherche à faire quelque chose avec un tableau. Je lui montre que c'est possible sans, et s'il peut s'inspirer de ce code pour le sien qui lui sera muni d'un tableau...bref, c'est juste un cas-test, pas la science absolue :ok:

ScientificBird
ScientificBird
Niveau 9
26 octobre 2014 à 00:53:44

Merci Noeleeste, ça me donne une idée. Par contre, pourquoi ça ne compile pas lorsque la valeur entrée dépasse 12 termes ? C'est ça la limite d'un nombre en binaire ? :noel:

LeuNoeleeste
LeuNoeleeste
Niveau 10
26 octobre 2014 à 01:05:31

Sans réfléchir, je dirai que c'est parce que ta saisie surpasse la capacité de ton type. Maintenant je dis peut être de la daube, attend demain que je sois moins endormi ou quelqu'un ici de plus éveillé que moi :ok:

Bunyan
Bunyan
Niveau 17
26 octobre 2014 à 01:48:54

Comment on fait sans tableau ?
Ben... tout simplement comme ça :)

Integer.parseInt(maBaseDeux, 2);

Restera juste un problème si le nombre entré est supérieur à 2,147,483,647.

Dans ce cas :

BigInteger bigInt = new BigInteger(maBaseDeux, 2);
bigInt.toString();

Je me sers des primitives du langage lorsque celles-ci correspondent parfaitement à ma problématique.

'Fin, dans tout les cas, y'a pas besoin de tableau, juste d'une String et d'une boucle sur celle-ci.

Accessoirement, oui, en Java et dans la plupart des langages évolués, il y a des conteneurs pour abstraire les tableaux, ceux-ci étant souvent immutable ou lourd à transformer.

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