天天看點

《嵌入式Linux與物聯網軟體開發——C語言核心深度解析》一2.5 位運算實戰演練1

本節書摘來自異步社群《嵌入式linux與物聯網軟體開發——c語言核心深度解析》一書中的第2章,第2.5節,作者朱有鵬 , 張先鳳,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視。

分析:将整數a和bit3為1,其餘bit為0的數進行位或運算即可得到結果。

構造bit3為1的數。

然後和整數a相位或并且指派給a。

a = a | (1<<3);或者a |= (1<<3);

分析:構造數的bit3~bit7為1。

構造bit3~bit7為1的數。

和整數a相位或并指派給a。

分析:将整數a和一個bit15為0,其餘bit位為1的數進行位與運算即可得結果。

構造bit15為0,其餘位為1的數。在構造這個數之前,通過2.3節的分析需要先構造bit15為1,其餘位為0的數,然後位取反即可。

和整數a相位與并指派給a。

分析:将整數a和一個bit15~ bit23為0,其餘bit位為1的數進行位與運算即可得結果。

構造bit15~ bit23為0,其餘位為1的數。

和整數a位與并指派給a。

分析:先将這個數bit3~bit8不變,其餘位全部清零;再将其右移3位得到結果;想明白了上面的兩步算法,再将其轉為c語言實作即可。

構造bit3~ bit8為1,其餘位為0的數。

再将a右移3位。

分析:我們隻需要将bit7~bit17全部清零,然後再将937設定到bit7~bit17位,這個過程中必須注意的一點就是不能影響其他位。

構造bit7~bit17為0,其餘位為1的數。

bit7~bit17清零。

構造bit7~bit17為937,其餘位為0的數。

将937寫入a的bit7~bit17。