convertion byte

convertion byte - Java - Programmation

Marsh Posté le 10-01-2008 à 21:28:06    

bonsoir ,j'ai 1 programme qui me donne au lieu de 0 et 1 des -1 et-2 et je crois que c 1 probléme de transtipage mais je n'arrive pas à le regler
le programme est celuila:
public class Decodeur {
 private byte f0;
 private byte f1;
 private byte s1;
 private byte s2;
 private byte s3;
 private byte s4;
 public Decodeur(){
  f0=0;
  f1=0;
 }
 public Decodeur(byte f1,byte f2){
  this.f1=f1;
  this.f0=f0;
 }
 public void setF0(byte f0){
  this.f0=f0;
 }
 public byte getF0(){
  return f0;
 }
 public void setF1(byte f1){
  this.f1=f1;
 }
 public byte getF1(){
  return f1;
 }
 
 public void setS1(byte s1){
  this.s1=s1;
 }
 public byte getS1(){
  return s1;
 }
   public void setS2(byte s2){
  this.s2=s2;
 }
 public byte getS2(){
  return s2;
 }
 
   public void setS3(byte s3){
  this.s3=s3;
 }
 public byte getS3(){
  return s3;
 }
   public void setS4(byte s4){
  this.f0=f0;
 }
 public byte getS4(){
  return s4;
 }
 
   public void calculerSortie(){
  s1=(byte)((~f0)&(~f1));
  s2=(byte)((~f0)&(f1));
  s3=(byte)((f0)&(~f1));
  s4=(byte)((f0)&(f1));
 }
}
et son teste :
public class T{
 public static void main (String[]args){
  Decodeur Dr=new Decodeur();
  Dr.setF0((byte)0);
  Dr.setF1((byte)1);
  Dr.calculerSortie();
  System.out.println ("la premiére sortie est"+Dr.getS1());
 }
}
et le resultat de teste c:
la premiére sortie est-2
Exit code: 0
No Errors

Reply

Marsh Posté le 10-01-2008 à 21:28:06   

Reply

Marsh Posté le 11-01-2008 à 19:53:37    

balises [code] stp

Reply

Marsh Posté le 11-01-2008 à 22:44:11    

Harkonnen a écrit :

balises [code] stp


jé pas copmpris!!!!!!!!?

Reply

Marsh Posté le 12-01-2008 à 13:05:37    

fo mètr dé baliz kod


---------------
HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris
Reply

Marsh Posté le 01-02-2008 à 18:01:46    

Les byte sont signés en Java! (valeur de -128 à 127 et non de 0 à 255).
Si tu veux afficher les bytes selon l'interprétation non signée, il faut afficher:  (byteX & 255) pour tronquer les bits du signe négatif.
Sinon un "byte" n'est pas un bit. le résultat de ~0 est -1 (et non 1). Si tu veux ne garder qu'un seul bit, il faut utiliser: (~byteX)&1 et non (~byteX) seulement... Mais tu peux masquer ces bits en excédent dans le résultat de ton println uniquement sans modifier ta fonction de "calcul".


Message édité par verdy_p le 01-02-2008 à 18:04:50
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed