今天一朋友發我這個代碼 輸入一個數 然後輸出居然是這個數的二進制
我實在看 不懂 求大神解釋下 還有 用這種方法能求n進制嗎 求指教
#include<stdio.h>
#include<stdlib.h>
int main()
{
unsigned int m,temp=1,i;
temp=temp<<31;
scanf("%d",&m);
for(i=1;i<=32;i++)
{
putchar(m&temp?'1':'0');
m=m<<1;
}
putchar('\n');
return 0;
}
temp=temp<<31; //32位系統上int有32位,這是將整數1移到最高位上,
for(i=1;i<=32;i++)
{
putchar(m&temp?'1':'0');
m=m<<1;
}
這段代碼是將用戶輸入的整數m最高位與temp求與,前面提到temp最高位是1,即用m的最高位和1求與並輸出。然後將m左移1位,更新最高位。以此運行32次,則將結果轉換為2進制。
這個方法不能實現N進制轉換