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