Keil C51中直接使用二進位制數的方法

2022-02-06 06:13:44 字數 824 閱讀 4983

在keil c51中數不能直接以二進位制形式賦值,雖然在8051的彙編中是可以的。二進位制數雖然書寫長,易出錯,但是由於是一位位寫的,所以程式設計者能夠很明確的看到每一位的狀態,看得比較直觀。於是很多人懷念了8051的彙編,很想在c51中使用二進位制。沒猜錯的話搜到本篇日誌的人很可能就是來找這種解決辦法的,下面兩種辦法都是不錯的選擇。

方法一:

方法二:

做乙個帶引數巨集定義,將輸入的類二進位制數變換為對應的16進製制數,整個定義和使用例項請見下文,可以直接使用,如果想研究原理又看不懂帶參巨集定義的朋友們請參考譚浩強的《c程式設計》預處理命令一章內容(第三版在p204-p211)。

#define longtobin(n) \

(\ ((n >> 21) & 0x80) | \

((n >> 18) & 0x40) | \

((n >> 15) & 0x20) | \

((n >> 12) & 0x10) | \

((n >> 9) & 0x08) | \

((n >> 6) & 0x04) | \

((n >> 3) & 0x02) | \

((n ) & 0x01) \

) #define bin(n) longtobin(0x##n##l)

void main(void)

上面預處理指令中使用了反斜槓\

,這裡解釋一下:每一條預處理語句總是以"#"字元開始,並且不能超過一行,一旦遇到換行符語句就被當做結束,唯一的一種能將預處理語句擴充套件到多行的辦法就是在換行符之前加乙個反斜槓('\

')。摘自:

Keil C51中直接使用二進位制數的方法

在keil c51中數不能直接以二進位制形式賦值,雖然在8051的彙編中是可以的。二進位制數雖然書寫長,易出錯,但是由於是一位位寫的,所以程式設計者能夠很明確的看到每一位的狀態,看得比較直觀。於是很多人懷念了8051的彙編,很想在c51中使用二進位制。沒猜錯的話搜到本篇日誌的人很可能就是來找這種解決...

二進位制 二進位制中1的個數

題目 請實現乙個函式,輸入乙個整數,輸出該數二進位制表示中 1 的個數。例如,把 9 表示成二進位制是 1001,有 2 位是 1。因此,如果輸入 9,則該函式輸出 2。示例 1 輸入 00000000000000000000000000001011 輸出 3 解釋 輸入的二進位制串 0000000...

二進位制運算使用

問題 寫乙個函式,求兩個整數之和,要求在函式體內不得使用 四則運算符號。分析 1 二進位制異或將得到他們的非進製部分。2 二進位制相與並左移一位,等效於進製。3 重複上述步驟 知道進製為0.code public int add int num1,int num2 return num1 參考 ww...