一、注意事項:
a、與:&,兩位都為1,才為1;
b、或:|,兩位都為0,才為0;
c、微操作只能用於整形資料,float和double進行位操作時編譯器會報錯;
d、異或:^,兩位相同為0,不同為1;
e、取反:~,1變為0,0變為1;
f、左移:<<,各二進位制全部向左移位,高位丟失,低位補零;
g、右移:>>,各二進位制全部向右移位,對於無符號數,低位丟失,高位補零;有符號數個編譯器不同,有的補符號位,有的補0;
二、技巧用途:
1、判斷奇偶:
只要判斷二進位制最末尾是0還是1即可判斷,為0則是偶數,為1則為奇數;因此用if(a & 1) == 0代替if(a%2 == 0)來判斷a是不是偶數。
輸出1到100所有的奇數:
if(i = 0; i < 100; i++)
if(i&1)
printf("%d ", i);
2、交換兩個數(整形的)
void swap(int &a, int &b)
3、變換符號:
整數變複數,複數變正數;操作是,對整數取反加1;
int signlreverse(int a)
4、求絕對值:
方法一:
int abs(int a)
方法二:
int abs(int a)
C 位操作技巧
一 注意事項 a 與 兩位都為1,才為1 b 或 兩位都為0,才為0 c 微操作只能用於整形資料,float和double進行位操作時編譯器會報錯 d 異或 兩位相同為0,不同為1 e 取反 1變為0,0變為1 f 左移 g 右移 各二進位制全部向右移位,對於無符號數,低位丟失,高位補零 有符號數個...
C語言位操作技巧
c語言位操作 2017年06月04日 16 51 00 閱讀數 1553 此文將花費您8 15分鐘時間,帶您對嵌入式中常用的位操作有個了解。和數位電路有點相似!感謝閱讀!位操作符 1.位與 1 注意 位與符號是乙個 兩個 是邏輯與。2 真值表 1 0 01 1 10 0 00 1 0 3 從真值表可...
位操作技巧
檢測乙個無符號數是不為2 n 1 為冪 x x 1 將最右側0位改為1位 x x 1 二進位制補碼運算公式 x x 1 x 1 x x 1 x x 1 x x 1 x y x y 1 x y x y x y x y 1 x y x y x y x y x y x y x y y x y x y x ...