十進位轉二進位
目前為止寫過最簡短的版本
概念:
INT_MIN的二進位長這樣 10000000000000000000000000000000
跟x做bit AND,除了最左邊bit,其他bit都會變0。
只有最左邊bit維持原樣,這時就可以單獨判斷該bit要印出0或1。
接下來將INT_MIN 往右shift一個bit。就可以判斷x第二個bit了,依此類推。
#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了,依此類推。
我是剛接觸c++的新手
回覆刪除可以請問一下一些問題嗎
如果不使用INT_MIN的話 那應該改成什麼阿><
還有
可以說明一下(x&y)?(cout << "1"):(cout << "0");
的意思嗎
我會很感謝你的
有點急><
信箱abc81726@gmail.com
即時abc81726@yahoo.com.tw
您好 雯華
回覆刪除如果您是剛剛學習c++的新手,那這隻程式顯然不適合您。
因為牽涉到許多bits operator,作法在提示裡也寫得很清楚了。