真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

【從飲水機(jī)到名人堂之c語(yǔ)言】操作符詳解(1)-創(chuàng)新互聯(lián)

站在用戶的角度思考問(wèn)題,與客戶深入溝通,找到金平網(wǎng)站設(shè)計(jì)與金平網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:網(wǎng)站設(shè)計(jì)制作、成都做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、域名注冊(cè)網(wǎng)站空間、企業(yè)郵箱。業(yè)務(wù)覆蓋金平地區(qū)。

目錄

前言:

一、操作符的分類

二、詳解操作符

1.算術(shù)操作符

2.移位操作符

1.原碼、反碼、補(bǔ)碼

2.左移位操作符

3.右移位操作符

三、位操作符

1.按位與&?

2、按位或 |?

3、異或^?

總結(jié):

前言:

我們前邊對(duì)數(shù)組進(jìn)行了系統(tǒng) 的學(xué)習(xí),并且制作了三子棋游戲,相信大家對(duì)數(shù)組有了一個(gè)更為深入的了解,從今天開始,我們就要對(duì)操作符進(jìn)行講解。

一、操作符的分類
操作符的分類
算術(shù)操作符
移位操作符
位操作符
賦值操作符
單目操作符
關(guān)系操作符
邏輯操作符
條件操作符
逗號(hào)操作符

下標(biāo)引用、函數(shù)調(diào)用與結(jié)構(gòu)成員

二、詳解操作符 1.算術(shù)操作符

分為+、-、*、/、%五個(gè)算術(shù)操作符,算術(shù)操作符比較簡(jiǎn)單,和我們數(shù)學(xué)中所學(xué)的相似,但是要注意的是C語(yǔ)言中的乘號(hào)為*,而不是x。

還有以下幾點(diǎn)我們要切記:

1. 除了 % 操作符之外,其他的幾個(gè)操作符可以作用于整數(shù)和浮點(diǎn)數(shù)。 2. 對(duì)于 / 操作符如果兩個(gè)操作數(shù)都為整數(shù),執(zhí)行整數(shù)除法。而只要有浮點(diǎn)數(shù)執(zhí)行的就是浮點(diǎn)數(shù)除法,即我們需要得到一個(gè)浮點(diǎn)數(shù)時(shí),我們必須控制除數(shù)或被除數(shù)至少有一個(gè)為浮點(diǎn)型。 3. % 操作符的兩個(gè)操作數(shù)必須為整數(shù)。返回的是整除之后的余數(shù)。 4.在使用 / 操作符過(guò)程中,也要記得除數(shù)不能為0。
2.移位操作符

移位操作符分為:

左移位操作符<<

右移位操作符>>

移位操作符實(shí)質(zhì)上是對(duì)數(shù)字的二進(jìn)制位進(jìn)行操作,這里我們就必須帶著大家來(lái)學(xué)習(xí)一些有關(guān)二進(jìn)制的知識(shí)。

1.原碼、反碼、補(bǔ)碼

原碼就是我們要進(jìn)行操作的數(shù)字轉(zhuǎn)換為2進(jìn)制后的形式,我們知道在32位操作系統(tǒng)下,一個(gè)整型為4個(gè)字節(jié),即32個(gè)比特位,一個(gè)比特位就是一個(gè)0或者1的序列,計(jì)算機(jī)通過(guò)電勢(shì)的高低來(lái)存儲(chǔ),0代表低電平,1代表高電平。

對(duì)于一個(gè)有符號(hào)類型的整數(shù)(unsigned int)來(lái)說(shuō)最高位(即最左邊的位)為符號(hào)位,1代表負(fù)號(hào),0代表正號(hào)。

所以3和-5的原碼就是:

00000000000000000000000000000011

10000000000000000000000000000101

了解了原碼之后,那么什么是反碼呢?

正數(shù)的反碼就是原碼本身,而負(fù)數(shù)的反碼就是將這個(gè)數(shù)字的符號(hào)位除外的二進(jìn)制序列按位取反之后所得到的二進(jìn)制序列,什么叫按位取反呢?按位取反就是將每個(gè)比特位上的數(shù),為0時(shí)改為1,為1時(shí)改為0。

所以3和-5的反碼為:

0000 0000 0000 0000 0000 0000 0000 0011

1111 1111 1111 1111 1111 1111 1111 1010

補(bǔ)碼也很簡(jiǎn)單,正數(shù)的補(bǔ)碼就是原碼本身,所以正數(shù)的原碼反碼補(bǔ)碼都是相同的,而負(fù)數(shù)就是在反碼的操作上加1。

所以3和-5的補(bǔ)碼為:

0000 0000 0000 0000 0000 0000 0000 0011

1111 1111 1111 1111 1111 1111 1111 1011

在我們的內(nèi)存中,存儲(chǔ)的不是原碼,而是這個(gè)數(shù)字的補(bǔ)碼。

2.左移位操作符

左移位操作符就是對(duì)一個(gè)二進(jìn)制數(shù)最左邊的數(shù)舍棄,最右邊補(bǔ)0。

對(duì)數(shù)字n進(jìn)行移位操作,可以表示為n<<1,在沒(méi)有被賦值的情況下,n的值并不會(huì)發(fā)生改變,只有當(dāng)n=n<<1時(shí),n的值才會(huì)發(fā)生變化。

通俗的來(lái)說(shuō),左移操作符就是給這個(gè)數(shù)乘上2,左移幾位,就會(huì)成上2的幾次方,例如:a=3<<2,求得的值就是3*2的平方。

3.右移位操作符

與左移位操作符有所不同,右移位操作符分為邏輯移位和算術(shù)移位,根據(jù)編譯器的不同,可能在進(jìn)行右移位時(shí)是邏輯移位,也可能是算術(shù)移位,邏輯移位就是將整個(gè)二進(jìn)制序列向右移動(dòng),左邊的空隙補(bǔ)上0,而算術(shù)移位則是將二進(jìn)制序列向右移動(dòng),左邊補(bǔ)上原來(lái)的符號(hào)位上的數(shù)。

以-1為例:

-1的補(bǔ)碼為:

1111?1111 1111?1111?1111?1111?1111?1111

進(jìn)行邏輯移位

0【補(bǔ)位】? ? 1111?1111 1111?1111?1111?1111?1111?111? ? ? ? 1【丟棄】

所以移位后:

0111?1111 1111?1111?1111?1111?1111?1111

進(jìn)行算術(shù)移位

1【補(bǔ)位】? ? 1111?1111 1111?1111?1111?1111?1111?111? ? ? ? 1【丟棄】

所以移位后:

1111?1111 1111?1111?1111?1111?1111?1111

所以我們?cè)谶M(jìn)行移位后,將移位后的補(bǔ)碼重新轉(zhuǎn)化為原碼,即可得到移位后的值。但是如何轉(zhuǎn)化回原碼呢?

我們知道 ,由原碼轉(zhuǎn)化為補(bǔ)碼時(shí),是通過(guò)原碼取反再加1,所以轉(zhuǎn)化回去可以先減1再取反,也可以先通過(guò)取反加1轉(zhuǎn)化回去。

轉(zhuǎn)化回去之后,我們發(fā)現(xiàn)-1算術(shù)右移1位的原碼和補(bǔ)碼相同,所以 移位后的值應(yīng)該不變,那么到底是不是這樣,我們回去驗(yàn)證一下。

int main() {
	int a = -1;
	int b = 0;
	b = a >>1;
	printf("%d %d", a, b);
	return 0;
}

三、位操作符

位操作符有:

& // 按位與 | // 按位或 ^ // 按位異或 注:他們的操作數(shù)必須是整數(shù)。

位操作符與移位操作符相同,都是對(duì)二進(jìn)制位進(jìn)行操作,而且操作數(shù)都必須是整數(shù)。

1.按位與&?

即就是將兩個(gè)數(shù)的每個(gè)二進(jìn)制位上的數(shù)進(jìn)行判斷,如果同時(shí)為1時(shí)結(jié)果為1,其余情況都為0。

如:3和-5在內(nèi)存中存儲(chǔ)的補(bǔ)碼為:

0000 0000 0000 0000 0000 0000 0000 0011

1111 1111 1111 1111 1111 1111 1111 1011

n=3&-5的值應(yīng)該為0000 0000?0000 0000?0000 0000?0000 0011

結(jié)果為3,那么我們用代碼測(cè)試一下。

int main() {
	int a = 3;
	int b = -5;
	int c = a & b;
	printf("%d %d\n", a, b);
	printf("%d", c);
	return 0;
}

通過(guò)代碼來(lái)驗(yàn)證是正確的。

2、按位或 |?

即就是將兩個(gè)數(shù)的每個(gè)二進(jìn)制位上的數(shù)進(jìn)行判斷,如果同時(shí)為0時(shí)結(jié)果為0,其余情況都為1。

以3和-5來(lái)舉例:

如:3和-5在內(nèi)存中存儲(chǔ)的補(bǔ)碼為:

0000 0000 0000 0000 0000 0000 0000 0011

1111 1111 1111 1111 1111 1111 1111 1011

所以n= 3 | -5 =?1111 1111 1111 1111 1111 1111 1111 1011,通過(guò)取反加1得到原碼,轉(zhuǎn)化為十進(jìn)制為-5,我們也來(lái)通過(guò)代碼驗(yàn)證一下。

int main() {
	int a = 3;
	int b = -5;
	int c = a | b;
	printf("%d %d\n", a, b);
	printf("%d", c);
	return 0;
}

3、異或^?

即就是將兩個(gè)數(shù)的每個(gè)二進(jìn)制位上的數(shù)進(jìn)行判斷,如果相同時(shí)結(jié)果為0,不同時(shí)都為1。

以3和-5來(lái)舉例:

如:3和-5在內(nèi)存中存儲(chǔ)的補(bǔ)碼為:

0000 0000 0000 0000 0000 0000 0000 0011

1111 1111 1111 1111 1111 1111 1111 1011

n=3^-5=?1111 1111 1111 1111 1111 1111 1111 1000,轉(zhuǎn)化為原碼,轉(zhuǎn)化為十進(jìn)制后,得到n=-8.

int main() {
	int a = 3;
	int b = -5;
	int c = a ^ b;
	printf("%d %d\n", a, b);
	printf("%d", c);
	return 0;
}


總結(jié):

今天我們講解了操作符中的算術(shù)操作符,位操作符,移位操作符,并且讓大家了解到了二進(jìn)制中的原碼補(bǔ)碼和反碼,讓我們對(duì)二進(jìn)制數(shù)有了一個(gè)更為深入的認(rèn)識(shí),希望通過(guò)今天的學(xué)習(xí),大家知道在內(nèi)存中數(shù)據(jù)的儲(chǔ)存形式以及幾個(gè)操作符的使用方法。?

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧


網(wǎng)站標(biāo)題:【從飲水機(jī)到名人堂之c語(yǔ)言】操作符詳解(1)-創(chuàng)新互聯(lián)
當(dāng)前路徑:http://weahome.cn/article/dpjiji.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部