按位與運算符&,有點和前面學過的邏輯與(&&)運算符類似,只有一個&,都是同為1則為1。不同的是按位相互運算。如3&5,運算過程如下:
3 0000 0000 0000 0000 0000 0000 0000 0011 5 0000 0000 0000 0000 0000 0000 0000 0101 & ------------------------------------------ 0000 0000 0000 0000 0000 0000 0000 0001
可以看到3&5的結(jié)果即十進制1。
大家可以嘗試其他數(shù)值實驗,代碼如下:
#include<stdio.h> int main() { int a; a=3&5; printf("a=%d\n",a); return 0; }
運行結(jié)果如下:
a=1
按位與運算符的作用:
1. 清零:
我們可以對某一個數(shù)與0進行按位與運算,由于兩個位都為1才為1,因此最終全部位都變?yōu)?,起到清零的作用
2. 取指定位:
如某些存儲場景下,“第1~3位表示xxxx“”,我們需要取出1~3位,則可以讓原數(shù)值與數(shù)字7進行按位與運算,得到的結(jié)果即是原數(shù)值的1~3位的值。
3. 判斷奇偶:
可以發(fā)現(xiàn),數(shù)字的奇偶取決于二進制位的最低一位是1還是0,因此只需要與1按位與運算,判斷是1是0即可得知奇偶。
希望大家多多嘗試。
C語言網(wǎng)提供由在職研發(fā)工程師或ACM藍橋杯競賽優(yōu)秀選手錄制的視頻教程,并配有習題和答疑,點擊了解:
一點編程也不會寫的:零基礎C語言學練課程
解決困擾你多年的C語言疑難雜癥特性的C語言進階課程
從零到寫出一個爬蟲的Python編程課程
只會語法寫不出代碼?手把手帶你寫100個編程真題的編程百練課程
信息學奧賽或C++選手的 必學C++課程
藍橋杯ACM、信息學奧賽的必學課程:算法競賽課入門課程
手把手講解近五年真題的藍橋杯輔導課程