1

Javaで2進数のクラスを書き込もうとしていますが、0で始まる整数を送信すると、数値が正しく保存されません。私は問題が何であるかを知っていますが、解決策を見つけることができません。C ++ではintの代わりにfloatを使用しましたが、Javaでは機能しないようです。

import java.util.*;


class BinaryNumber {

private boolean b[];


public void setBit(int index,boolean value){
 b[index]=value;
}

public boolean getBit(int index){
 return b[index];
}

public void clear(){    
    for(int i=0;i<8;i++)
    b[i]=false;
}

public BinaryNumber() {
    b=new boolean[8];
    for(int i=0;i<8;i++){
    b[i]=false;
    }   
} 

public void inputNumber(int a){

 if(a>11111111) {    
    System.out.println(" Exception Number to Large Nothing Entered ");
 }   
 else {

     int number=a;
     int c=7;
     int digit=0;

     for(int i=0;i<8;i++) {
         digit=number%10;
             if(digit==1){ 
             b[c]=true;
             }
             else if (digit==0) { 
             b[c]=false; 
             }
             else { 
             System.out.println(" Only Binary Number Accepted "); 
             clear();
             i=8; //break
             }      
         number=number/10;
         c--;       
     }   
 }  
}

public void outputNumber(){     
    for(int i=0;i<8;i++){
        if(b[i]==true){
            System.out.print("1");
        }
        else{
            System.out.print("0");
        }
    }       
    System.out.println(""); 
}

 }


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

BinaryNumber a=new BinaryNumber();  
a.inputNumber(00100110);    
a.outputNumber();

BinaryNumber b=new BinaryNumber();  
b.inputNumber(00100111);
    b.outputNumber();   

}
}
4

2 に答える 2

7

で始まる数字0は、Javaでは8進数として解釈されます。

于 2012-10-22T04:40:00.483 に答える
0

数字自体と言語での表現には違いがあります。たとえば、「0xD」(基数16)、「13」(基数10)、「015」(基数8)、および「b1101」(基数2)は、同じ番号を参照する4つの異なる表現です。

バイナリリテラル

于 2012-10-22T04:44:07.720 に答える