C語言位操作

2021-07-13 07:43:53 字數 1517 閱讀 3281

一. 位操作運算子:

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異或無變化,移位分 左 右 移,物件分 有 無符號數,只說一點 有符號數右移左側補符號位,叫算術移位,...