以二進位格式列印正整數變數內之資料
高階程式版本
步驟一:手動計算
int x;
x = 7649;
7649 / 2 = 3824 餘 1
3824 / 2 = 1912 餘 0
1912 / 2 = 956 餘 0
956 / 2 = 478 餘 0
478 / 2 = 239 餘 0
239 / 2 = 119 餘 1
119 / 2 = 59 餘 1
59 / 2 = 29 餘 1
29 / 2 = 14 餘 1
14 / 2 = 7 餘 0
7 / 2 = 3 餘 1
3 / 2 = 1 餘 1
1 / 2 = 0 餘 1
1110111100001
步驟二:安排基本流程
如下圖:
這裡有一個大問題,
位元順序全部顛倒過來了,
列印結果是 100011110111,
要解決這個問題有兩個辦法:
-
用陣列變數先記錄起來,
算完以後再一起列印。
-
用遞迴 (recursive) 的函式呼叫。
看來我們得先忍受一下倒過來看了。
步驟三:程式片段
-
變數:int iNumber, iDigit;
-
scanf("%d", &iNumber);
-
while (iNumber>0) {}
-
iDigit = iNumber % 2;
iNumber = iNumber / 2;
printf("%d", iDigit);
步驟四:測試