IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

API standards et tierces Java Discussion :

[bit]Mettre un mot de 16 bits (string) en short


Sujet :

API standards et tierces Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    85
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juillet 2003
    Messages : 85
    Points : 73
    Points
    73
    Par défaut [bit]Mettre un mot de 16 bits (string) en short
    Bijour,

    Voila j'ai un petit projet en Architechture des ordinateur, et je travaille donc avec des micro instructions sur 16 bits
    Mon problème est que je dois traiter un mot binaire sous forme de string et le mettre dans une variable de type short; Ce que je voudrait c'est donc faire une methode qui fasse un truc du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    short monInstruction = convertToShort("1010110101001010");
    Voila. Je galère depuis des heures et en faisant un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    	public short convertir(String monMot) {
    		short bit;
    		short res = 0;
    		boolean neg = false;
    		//Est t'il sur 16 bits?
    		if (monMot.length() != 16) {
    			System.out.println("Erreur le mot doit etre sur 16 bits");
    			return 0;
    		}
    		//Voyons deja s'il est négatif
    		if (monMot.charAt(0) == '1')
    			neg = true;
     
    		//Testons le bit a bit
    		for (bit = 0; bit < 15; bit++) {
    			if (monMot.charAt(15 - bit) == '1') {
    				res = puissDeDeux(bit);
    			}
    		}
    		return res;
    	}
     
    	public short puissDeDeux(short i) {
    		short cpt = 1;
    		short res = 2;
    		if (i == 0)
    			return (short) 1;
    		for (cpt = 0; cpt < i; cpt++) {
    			res *= 2;
    		}
    		return res;
    	}
    Mais mon ami le compilo aime pas et en plus si il passe je trouve des valeurs abérentes.

    Merci d'avance[/quote]

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    85
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juillet 2003
    Messages : 85
    Points : 73
    Points
    73
    Par défaut
    Nan bas c bon gt po loin

    Ce qui est bizarre chez le type short c qu'il aime pas des trucs du style
    Il vaut mieux
    Pour info voila mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
     
    public class Convertisseur {
     
    	/**
             * Constructeur de la classe Convertisseur.java
             * 
             */
    	public Convertisseur() {
    	}
     
    	/**
             * Cette methode permet de prendre un mot binaire de 16 bits sous forme de string
             * et renvoie sa valeur décimale
             * 
             * @param monMot
             * @return la valeur décimale du mot binaire
             */
    	public short convertir(String monMot) {
    		short bit;
    		short res = 0;
    		boolean neg = false;
    		//Est t'il sur 16 bits?
    		if (monMot.length() != 16) {
    			System.out.println("Erreur le mot doit etre sur 16 bits");
    			return 0;
    		}
    		//Voyons deja s'il est négatif
    		if (monMot.charAt(0) == '1')
    			neg = true;
     
    		//Testons le bit a bit
    		for (bit = 0; bit < 15; bit++) {
    			if (monMot.charAt(15 - bit) == '1') {
    				res += puissDeDeux(bit);
    			}
    		}
    		if(neg)res -= (short)32768;
    		System.out.println("" + monMot + " = " + res);
    		return res;
    	}
     
    	public short puissDeDeux(short i) {
    		short cpt = 1;
    		short res = 2;
    		if (i == 0)
    			return (short) 1;
    		for (cpt = 1; cpt < i; cpt++) {
    			res *= 2;
    		}
    		return res;
    	}
    }

  3. #3
    Membre averti
    Avatar de JHelp
    Inscrit en
    Octobre 2002
    Messages
    185
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 185
    Points : 444
    Points
    444
    Par défaut
    Pour il faut faire Car il prend un short a, un int 54 (par défaut pour lui c'est un int), il fait la somme dans le type le plus grand donc en int, qu'il tronque ensuite en short. Tandis que de spécifié le type il convertit 54 en short, a est un short, il fait la somme dans les short. Tu comprends ?
    Pour le +=, comme il s'aggit d'une affectaion, il convertit d'abord ce qu'il y a à droite dans le type d'arrivée ici short, puis faixs la somme.
    Je sais pas si je suis clair.
    JHelp
    Pour avoir une réponse efficace :
    1) Soyez précis dans vos questions
    2) Choisssez bien votre forum
    3) Consultez la FAQ et la doc avant

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 07/05/2009, 09h47
  2. Lire des mots de 16 bits
    Par oc_alex86 dans le forum Débuter
    Réponses: 14
    Dernier message: 13/11/2008, 16h50
  3. front montant sur bit dans un mot
    Par Baxter67 dans le forum C++Builder
    Réponses: 0
    Dernier message: 23/01/2008, 23h08
  4. extraire un bit d'un mots
    Par Emcy dans le forum C
    Réponses: 4
    Dernier message: 04/09/2006, 14h33
  5. lire mots de 10 bits
    Par calavera dans le forum C
    Réponses: 7
    Dernier message: 01/11/2005, 18h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo