十進制轉二進制代碼


睡不着  看了一下以前的博客 發現算法bug修復一下   2017年10月4日 01:38:44

網上看到一個代碼 很有意思大家可以看看

public static void main(String[] args) {
        int n = -10;
        String result = "";
        boolean minus = false;

        //如果該數字為負數,那么進行該負數+1之后的絕對值的二進制碼的對應位取反,然后將它保存在result結果中
        if(n < 0){
            minus = true;
            n = Math.abs(n + 1);
        }

        while(true){
            int remainder = (!minus && n % 2 == 0) || (minus && n % 2 == 1) ? 0 : 1;

            //將余數保存在結果中
            result = remainder + result;
            n /= 2;

            if(n == 0){
                break;
            }
        }

        //判斷是否為負數,如果是負數,那么前面所有位補1
        if(minus){
            n = result.length();
            for(int i = 1; i <= 32 - n; i++){
                result = 1 + result;
            }
        }

        System.out.println(result);

    }

 

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

今天溫習了學過的知識,將十進制轉二進制的代碼做出來了,如有不對請各位大神指出

System.out.print("請輸入一個十進制數字:");
Scanner sc=new Scanner(System.in);
int a=sc.nextInt();
int l=0;//l為除了幾次
int b[]=new int[32];
while(a>0)
{
a/=2;
b[31-l]=a%2;
l++;
}
System.out.println("轉化的二進制數字為:");
for (int i = 0; i < b.length; i++)
{
System.out.print(b[i]);
if ((i+1)%8==0)
{
System.out.print(" ");
}
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM