前段時間寫的乙個二進位制打字程式,之所以弄這個主要是因為我的乙個同學說過要是鍵盤上只有兩個鍵(0或1),那編起程式來那該多累啊。後來我覺得好玩,就隨便編了乙個。
主要實現的效果:
使用者利用數字鍵的'1'、'2'('1'對應二進位制值'1','2'對應二進位制值'0')輸入7位二進位制數字(不顯示在螢幕上),輸完後,程式將輸出二進位制對應的ascii字元到螢幕上。退出時,請輸入'1111110'即可。
下面我就具體分析一下我的源**:
1 這段主要是判斷程式過程中是否會出現異常 2//中斷
3void my_assert(bool condition, char* info)
8 }
1//這段呢,是輸出字元
2void output(char ch)
1//判斷是否完成標準二進位制序列輸入,即判斷乙個字元對應的二進位制數字是否輸入完全
2bool checkeoc(char ch)
7return eoc;
8 }
下面這段是程式的核心,思路就是連續獲取使用者的input_len個二進位制值,然後利用二進位制轉十進位制的原理將其轉為十進位制數,最後再強制轉換為char型即可。很簡單吧。
1//獲取字元,將二進位制序列轉換為字元
2const
int input_len = 7;
3char my_getchar(void)
11 i++;
12 total += (ch-'
0') * pow(2, len-1);
13 len--;
14 }
15 ch = char(int(total));
16return ch;
17 }
主函式:
1int main(void) 910
//char2binary("e:\\courses\\test1.cpp","e:\\courses\\test2.txt");
11return
0;
12 }
為了方便如此另類的「二進位制程式設計」,我還特意寫了個函式,可以直接將寫好的源**檔案轉換為純二進位制的檔案,二進位制序列之間用'#'隔開。當然了,該程式不能直接匯入這個「二進位制檔案」從而輸出相應的字元型檔案。只好拜託使用者對應著乙個乙個輸了。
1//將文字檔案轉換為二進位制序列檔案
2void char2binary(char* url1, char* url2);
11int r = 0;
12while((ch = in.get()) != eof)
21 len = 7;
22for(int i = 0; i < len; i++)
25out.put('
#');
26 }
27in.close();
28out.close();
29 }
好了,大家體驗下用兩個鍵進行二進位制程式設計吧。
計算兩個整數的二進位制中有幾個二進位制不同
演算法思想 這裡用到位運算,給定兩個初值 1 定義乙個計數器count在後面用來計算不同的二進位制的個數 2 定義乙個變數i,i從0開始,迴圈32次,因為32位二進位制,採用乙個for迴圈 3 a和b的二進位制形式每次右移一次,右移出的那個二進位制與1相與,如果結果相同則說明兩個二進位制相同,反之相...
關於二進位制的利用
尋找乙個序列的真子集。x n x 其實也是以上類似的原理。遍歷的乙個序列的所有可能排列。也就是說有4個元素。那麼對於1個 對於2個 對於3個 對於4個。這樣所有的排列情況列舉。比如4個元素。那就是 i pow 2,5 1 1111 for x 1 xx 就是這種序列。include include ...
交換兩個int變數的方式(二進位制)
個人筆記 通常我們交換兩個變數都會用乙個中間值來儲存然後交換,用int來舉例 int a 1,b 2 int temp 中間值 temp a,a b,b temp 這樣就很簡單,我們也可以用差值法 int a 1,b 2 a a b b a b a a b 是不是感覺很有意思?其實這兩種還是很容易就...