C 位操作技巧

2021-12-30 01:58:03 字數 751 閱讀 7942

一、注意事項:

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所有的奇數:

[cpp]  

if(i = 0; i < 100; i++)  

if(i&1)  

printf("%d ", i);  

2、交換兩個數(整形的)

[cpp]  

void swap(int &a, int &b)  

3、變換符號:

整數變複數,複數變正數;操作是,對整數取反加1;

[cpp]  

int signlreverse(int a)  

4、求絕對值:

方法一:

[cpp]  

int abs(int a)  

方法二:

[cpp] 

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 ...