C語言中的運算規則

來源:文萃谷 2.88W

大家在學習C語言中領悟到哪些運算規則了嗎?下面小編為大家整理了C語言中的運算規則,希望能幫到大家!

C語言中的運算規則

C語言提供的位運算符列表:

運算符 含義 描述

& 按位與 如果兩個相應的二進制位都為1,則該位的結果值為1,否則為0

| 按位或 兩個相應的二進制位中只要有一個為1,該位的結果值為1

^ 按位異或 若參加運算的兩個二進制位值相同則為0,否則為1

~ 取反 ~是一元運算符,用來對一個二進制數按位取反,即將0變1,將1變0

<< 左移 用來將一個數的各二進制位全部左移N位,右補0

>> 右移 將一個數的各二進制位右移N位,移到右端的低位被捨棄,對於無符號數,高位補0

1、“按位與”運算符(&)

按位與是指:參加運算的兩個數據,按二進制位進行“與”運算。如果兩個相應的二進制位都為1,則該位的結果值為1;否則為0。這裏的1可以理解為邏輯中的true,0可以理解為邏輯中的false。按位與其實與邏輯上“與”的運算規則一致。邏輯上的“與”,要求運算數全真,結果才為真。若,A=true,B=true,則A∩B=true 例如:3&5 3的二進制編碼是11(2)。(為了區分十進制和其他進制,本文規定,凡是非十進制的數據均在數據後面加上括號,括號中註明其進制,二進制則標記為2)內存儲存數據的.基本單位是字節(Byte),一個字節由8個位(bit)所組成。位是用以描述電腦數據量的最小單位。二進制系統中,每個0或1就是一個位。將11(2)補足成一個字節,則是00000011(2)。5的二進制編碼是101(2),將其補足成一個字節,則是00000101(2)

按位與運算:

00000011(2)

&00000101(2)

00000001(2)

由此可知3&5=1

c語言代碼:

#include

main()

{

int a=3;

int b = 5;

printf("%d",a&b);

}

按位與的用途:

(1)清零

若想對一個存儲單元清零,即使其全部二進制位為0,只要找一個二進制數,其中各個位符合一下條件:

原來的數中為1的位,新數中相應位為0。然後使二者進行&運算,即可達到清零目的。

例:原數為43,即00101011(2),另找一個數,設它為148,即10010100(2),將兩者按位與運算:

00101011(2)

&10010100(2)

00000000(2)

c語言源代碼:

#include

main()

{

int a=43;

int b = 148;

printf("%d",a&b);

}

(2)取一個數中某些指定位

若有一個整數a(2byte),想要取其中的低字節,只需要將a與8個1按位與即可。

a 00101100 10101100

b 00000000 11111111

c 00000000 10101100

(3)保留指定位:

與一個數進行“按位與”運算,此數在該位取1.

例如:有一數84,即01010100(2),想把其中從左邊算起的第3,4,5,7,8位保留下來,運算如下:

01010100(2)

&00111011(2)

00010000(2)

即:a=84,b=59

c=a&b=16

c語言源代碼:

#include

main()

{

int a=84;

int b = 59;

printf("%d",a&b);

}

  2、“按位或”運算符(|)

兩個相應的二進制位中只要有一個為1,該位的結果值為1。借用邏輯學中或運算的話來説就是,一真為真。

例如:60(8)|17(8),將八進制60與八進制17進行按位或運算。

00110000

|00001111

00111111

c語言源代碼:

#include

main()

{

int a=060;

int b = 017;

printf("%d",a|b);

}

應用:按位或運算常用來對一個數據的某些位定值為1。例如:如果想使一個數a的低4位改為1,則只需要將a與17(8)進行按位或運算即可。

熱門標籤