本節書摘來自異步社群《嵌入式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。