睡不着 看了一下以前的部落格 發現算法bug修複一下 2017年10月4日 01:38:44
網上看到一個代碼 很有意思大家可以看看
public static voidmain(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(" ");
}
}