一. 位操作運算子:
1. 按位與&: 有0則0, 全1為1.
格式: 數1&數2; 如:5&4=4;
使用: (1). 清零特定位.
(2). 取某數中的指定位.
2. 按位或 |: 有1則1, 全0為0.
格式: 數1 | 數2; 如: 10 | 5 = 15;
使用: 將運算元某些位 置為1, 其他位不變.
3. 異或^: 參與運算的兩數各對應的近位異或, 當對應的二進位制位值相異時為1, 否則為0(相同為0, 不同為1).
格式: 數1^數2; 如: 10^5=15;
使用: (1). 使特定位的值取反.
(2). 不引入第三變數, 交換兩個變數的值.
(3). 與0異或保留原值, 與1異或取反.
(4). 與自身相異或, 則全部清零, 如: a^a;
4. 左移運算 << : 把」<<」左邊的運算數的各二進位全部左移n位, 高位丟棄, 低位補0.
int a=0;
a=a<<2; <==> a=a*4;
使用: 左移一位相當於*2, 效率比」*」更加高.
5. 右移運算 >>: 把「>>」 左邊的運算數的各二進位制全部右移n位, 低位丟棄.
使用: 相當於 /2, 效率比」/」更高.
二. 位運算模板: 對乙個int型別的整數最後四位清零.
16位: a & 0xf0;
32位: a & 0xfff0;
三. 其他:
1. 把乙個16位的整數的各個位數求和, 每4位為乙個數, 用函式寫出來.
void show()
int i=0;
int nnum=0001 1100 1010 0101;
int ntemp=0;
for(i=0;i<4;++i)
ntemp=nnum& 0x000f;
nnum+=ntemp;
nnum=nnum>> 4;
2. 浮點數儲存格式:
如: 20.5
①. (20.5)5 = (10100.1)2;
※ 小數部分如何存: 0.5*2=1.0; 1拿出來儲存.
為什麼小數沒有精確度: 拿0.3如何儲存來舉例.
0.3*2=0.6; 0拿出來儲存, 剩下0.6.
又回到了0.6一直做這種迴圈運算
0.6*2=1.2; 1拿出來儲存, 剩下0.2.
0.2*2=0.4; 0拿出來儲存, 剩下0.4.
0.4*2=0.8; 0拿出來儲存, 剩下0.8.
0.8*2=1.6; 1拿出來儲存, 剩下0.6.
②. 10100.1 ==> 1.01001*24;
③. 4+127=131;
④. 131 ==> 10000011; (二進位制)
⑥. 0 + 10000011 + 0100 + 0000 ……(補齊位數)
轉成16位進製得出結果為: 41 +a4+ 00+ 00…
C語言位操作
在電腦程式中,資料的位是可以操作的最小資料單位,理論上可以用 位運算 來 完成所有的運算和操作。一般的位操作是用來控制硬體的,或者做資料變換使用,但是,靈活的位操作可以有效地提高程式執行的效率。c語言提供了位運算的功 能,這使得c語言也能像組合語言一樣用來編寫系統程式。位運算子c語言提供了六種位運算...
c語言位操作
位運算 and與 有一位為0 運算就為0 想獲取高四位,a a 0xf0 簡寫 a 0xf0 清零 一三五七位清零 a a 0x55 檢測位 檢測第三位 a a 0x04 遮蔽高四位,保留低4 位 a a 0x0f 統計2進製a中1的個數 1 include2 int main 3 11 print...
C語言位操作
朱老師物聯網大講堂 學習筆記 1 位與 只有1 1才是1,其餘全是0,位或 只有0 0才是0,其餘全是1,位取反 按位操作,位異或 1 0 1 0 1 1,也就是說相異結果是1,與1異或會取反,與0異或無變化,移位分 左 右 移,物件分 有 無符號數,只說一點 有符號數右移左側補符號位,叫算術移位,...