程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> 方法-關於位與運算 求二進制

方法-關於位與運算 求二進制

編輯:編程綜合問答
關於位與運算 求二進制

今天一朋友發我這個代碼 輸入一個數 然後輸出居然是這個數的二進制
我實在看 不懂 求大神解釋下 還有 用這種方法能求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進制轉換
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved