十進位轉二進位

目前為止寫過最簡短的版本
#include<iostream>
#include<climits>
using namespace std;

int main(){
    int x=0;
    unsigned int y = INT_MIN;

    cout << "please enter a Integer:";
    cin >> x;

    while(y!=0){
        (x&y)?(cout << "1"):(cout << "0");
        y=y>>1;
    }

    return 0;
}

概念:
INT_MIN的二進位長這樣 10000000000000000000000000000000
跟x做bit AND,除了最左邊bit,其他bit都會變0。
只有最左邊bit維持原樣,這時就可以單獨判斷該bit要印出0或1。

接下來將INT_MIN 往右shift一個bit。就可以判斷x第二個bit了,依此類推。

留言

  1. 我是剛接觸c++的新手

    可以請問一下一些問題嗎

    如果不使用INT_MIN的話 那應該改成什麼阿><
    還有
    可以說明一下(x&y)?(cout << "1"):(cout << "0");
    的意思嗎
    我會很感謝你的
    有點急><
    信箱abc81726@gmail.com
    即時abc81726@yahoo.com.tw

    回覆刪除
  2. 您好 雯華
    如果您是剛剛學習c++的新手,那這隻程式顯然不適合您。
    因為牽涉到許多bits operator,作法在提示裡也寫得很清楚了。

    回覆刪除

張貼留言

這個網誌中的熱門文章

讀書心得: 撒哈拉的故事

OpenGL FAQ: 8. 使用視圖與相機鏡頭轉換,及 gluLookAt()

讀書心得: 你以為你以為的就是你以為的嗎?