利用兩個鍵進行二進位制程式設計

2022-07-19 08:39:16 字數 1657 閱讀 9456

前段時間寫的乙個二進位制打字程式,之所以弄這個主要是因為我的乙個同學說過要是鍵盤上只有兩個鍵(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 }

主函式:

1

int 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 是不是感覺很有意思?其實這兩種還是很容易就...