zerojudge a034. 二進位制轉換

題目在 https://zerojudge.tw/ShowProblem?problemid=a034

這題不難, 就是在做十進位數字轉成二進位數字, 看了一下其他人寫的解題思路, 感覺大家都是用純軟體或是說純數學的方法在解題. 好像沒有人用硬體的思路來解題? 為什麼這麼說呢? 因為電腦本來就是二進位的機器, 它是為了讓人看懂才把二進位轉成十進位給人看的. 現在十進位要轉成二進位, 根本也不需要轉什麼, 就把電腦內部的真實二進位數字用0和1印出來就行了.

但是還是為了符合人類懶惰的書寫習慣, 二進位數字前的0要去掉, 所以我還是加了一個flag來判斷前面的0要不要印出來.

我也不用什麼模數或是2的指數,遞迴呼叫這種耗費資源的寫法. 我用移位和位元運算這種硬體指令極快的方式就可以了.

完整程式如下.

#include <iostream>
using namespace std;

int main() {
	unsigned  int decimalNum;

	while ((cin >> decimalNum) && !cin.eof()) {

		unsigned int bit1 = 0x80000000;
		bool output=false;
		while (bit1 > 0) {
			int b = decimalNum & bit1;
			if(b){
				output=true;
				cout << 1;
			}else{
				if(output)
					cout << 0;
			}
			bit1 >>= 1;
		}
        cout << endl;

	}
	return 0;
}
C++