C語言位操作

2021-09-09 05:41:36 字數 938 閱讀 2957

1、交換a和b的值

a=a^b; b=b^a; a=a^b;
2、左移

a=a<<2;
a的二進位制左移2位,右邊補0;高位左移後溢位,捨棄;(此方法僅僅適用於a值左移時被溢位的高位中不包含1的情況)

eg:假設以乙個位元組(8位)存乙個數,若a為無符號整型變數,a=64,左移一位時,高位溢位的是0,而左移兩位的時候,高位溢位的包含1。

aa的二進位制

a<<1

a<<2

6401000000

(0)10000000

(01)00000000

12701111111

(0)11111110

(01)11111100

從**中可以看出a發生了溢位。

3、有符號數不完全適用於左移,因為左移可能導致符號位的變化。

4、當位移的位數超過該數值得最大位數時,編譯器採用的位移位數時取模於該值的最大位數,然後按照餘數進行位移。

eg:

int i=1;(i為32位)

i=i<<33;相當於i=i<<1;(33%32=1)

5、右移

有符號數值:正數補0,負數補1;

無符號數值:全部補0;

6、針對於無符號數來說:

左移n位,相當於乘以2的n次方;

右移n位,相當於除以2的n次方;

7、在進行移位操作過程中,一定要考慮資料的溢位情況;

(更新於2019-1-15)

8、位域

在嵌入式c語言程式設計中,常常對記憶體的要求較高,因此採用位域可以有效減少變數的記憶體佔用率。

struct bs

;注意:

位域不能夠誇位元組,某些不足8位的,需要補齊8位。

struct bs

;

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