摘要:目錄移位操作符移位操作符位操作符位操作符移位操作符分為左移操作符和右移操作符。左移操作符移位規(guī)則左邊拋棄,右邊補(bǔ)。算數(shù)移位和邏輯移位。
目錄
分為左移操作符(>>)和右移操作符(<<)。
左移操作符:
移位規(guī)則:左邊拋棄,右邊補(bǔ)0。
什么意思呢,現(xiàn)在就讓我來(lái)仔細(xì)講解一番。
比如我們定義一個(gè)整型變量a,給它賦初值5.如int a=5;然后將a左移,即a<<2,得到的結(jié)果又是多少呢?在講之前,我們首先要了解到整型5在內(nèi)存中是怎樣存儲(chǔ)的,不太清楚的友友們就請(qǐng)看我之前一篇博客整數(shù)的3種表達(dá)形式及在內(nèi)存中的存儲(chǔ)啦,里面有詳細(xì)講解。整型5是以補(bǔ)碼的形式來(lái)存儲(chǔ)的。而將5左移2位就是將存儲(chǔ)在內(nèi)存中的二進(jìn)制位向左移動(dòng)2位并將此2位拋棄,右邊用0補(bǔ)齊。最后得到的就是5<<2后的結(jié)果啦,可以用一下圖來(lái)簡(jiǎn)單描述一下~
?根據(jù)上圖可知a<<2后得到的結(jié)果就是20。
右移操作符:
首先右移運(yùn)算分為兩種。算數(shù)移位和邏輯移位。
算數(shù)移位規(guī)則:左邊用該值的符號(hào)位填充,右邊丟棄。
邏輯移位規(guī)則:左邊用0補(bǔ)充,右邊丟棄。
具體什么意思呢,我們還是來(lái)看看幾個(gè)例子,如將5右移移位,即5>>1,得到的是多少呢?
如果是算數(shù)移位的話,就是將5存儲(chǔ)在內(nèi)存中的二進(jìn)制位向右移動(dòng)1位并將這一位拋棄,左邊用該值存儲(chǔ)的二進(jìn)制位的符號(hào)位補(bǔ)齊。如下圖:
所以5>>1得到的結(jié)果就是2。那邏輯移位呢,邏輯移位就是左邊用0,補(bǔ)充,右邊拋棄。對(duì)正數(shù)而言,其符號(hào)位就是0,所以算數(shù)移位與邏輯移位得到的結(jié)果相同,邏輯移位也可以用上圖來(lái)表示啦,得到的結(jié)果也是2。
若將-5右移一位呢,得到的結(jié)果又是什么呢。我們先來(lái)看看算數(shù)移位,就不多贅述了,請(qǐng)看下圖:
?
所以-5>>1算數(shù)移位得到的就是-3。
同理,我們來(lái)看看-5>>1邏輯移位的得到的是什么吧~
?
因?yàn)樽罡呶皇?,所以最后的結(jié)果就是3啦~。但是一般條件下都是用的算數(shù)移位哈。
&? ? ?按位(二進(jìn)制位)與
|? ? ? 按位(二進(jìn)制位)或
^? ? ?按位(二進(jìn)制位)異或
我們直接來(lái)看這段代碼,大家可以先猜一下最后輸出的是哪三個(gè)數(shù)呢:
int main(){ int a = 3; int b = -5; printf("%d %d %d", a & b, a | b, a ^ b); return 0;}
我們先來(lái)分析一下:按位與就是將兩個(gè)數(shù)存儲(chǔ)的二進(jìn)制位作比較,兩者均為1才為1,否則為0。因此a&b用圖來(lái)分析就是:
因此a&b的結(jié)果就為3了。
按位或就是?將兩個(gè)數(shù)存儲(chǔ)的二進(jìn)制位作比較,兩者中有一個(gè)為1就為1,否則為0。因此a|b用圖來(lái)分析就是:
?
所以a|b的值就是-5了。
按位異或就是?兩個(gè)數(shù)存儲(chǔ)的二進(jìn)制位作比較,兩者相同為0,相異為1,因此a^b用圖來(lái)分析就是:
?所以a^b的結(jié)果就是-8啦。
最后我們讓程序來(lái)運(yùn)行一下:
?是和分析的一樣吧~~~
到這里就結(jié)束啦,希望友友們能給個(gè)贊哈~~~
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/124772.html
摘要:語(yǔ)言基礎(chǔ)之操作符詳解操作符的分類算術(shù)操作符移位操作符位操作符邏輯操作符逗號(hào)表達(dá)式表達(dá)式求值隱式類型轉(zhuǎn)換算術(shù)轉(zhuǎn)換操作符的屬性今天就帶各位大佬來(lái)了解一波語(yǔ)言的操作符。 ...
摘要:今天小玄為大家?guī)?lái)語(yǔ)言的操作符相關(guān)的講解,希望大家能通過(guò)這篇文章對(duì)相關(guān)操作符有更加深入的理解。操作符的兩個(gè)操作數(shù)必須為整數(shù)。操作符的優(yōu)先級(jí)操作符的結(jié)合性是否控制求值順序。兩個(gè)相鄰的操作符先執(zhí)行哪個(gè)取決于他們的優(yōu)先級(jí)。 ????????今天小玄為大家?guī)?lái)C語(yǔ)言的操作符相關(guān)的講解,希望大家能通過(guò)...
摘要:毋庸置疑,運(yùn)算符號(hào)操作符就是進(jìn)行語(yǔ)言的一些運(yùn)算的,這些運(yùn)算符雖然你在學(xué)語(yǔ)言的時(shí)候很不起眼,而在有些題目上還不讓用這些操作符來(lái)做題,但是,當(dāng)你用到他們的時(shí)候,他們會(huì)給你意想不到的幫助。 目錄 操作符詳解 什么是操作符呢? 操作符的分類 操作符的優(yōu)先級(jí) ?1、優(yōu)先級(jí)1級(jí) 2、優(yōu)先級(jí)2級(jí) 3、...
摘要:注不要移動(dòng)負(fù)數(shù)位標(biāo)準(zhǔn)未定義行為這種行為屬于標(biāo)準(zhǔn)未定義行為語(yǔ)言中并沒(méi)有規(guī)定移動(dòng)負(fù)數(shù)位。按進(jìn)制位與規(guī)則兩個(gè)二進(jìn)制數(shù),有則為,全則為。為假的時(shí)候,打印語(yǔ)言中表示假,非表示真無(wú)論是正數(shù)還是負(fù)數(shù)。 C語(yǔ)言操作符詳解 目錄 一、算術(shù)操作符 二、移位操作符 三、位操作符 四、賦值操作符 五、單目操作符 六...
摘要:異步通信與同步通信異步通信異步通信是指通信的發(fā)送與接收設(shè)備使用各自的時(shí)鐘控制數(shù)據(jù)的發(fā)送和接收過(guò)程。同步通信同步通信時(shí)要建立發(fā)送方時(shí)鐘對(duì)接收方時(shí)鐘的直接控制,使雙方達(dá)到完全同步。配置串口設(shè)置為異步通信基礎(chǔ)參數(shù)波特率為。 ...
閱讀 1186·2021-11-24 09:39
閱讀 2690·2021-09-28 09:35
閱讀 1083·2019-08-30 15:55
閱讀 1378·2019-08-30 15:44
閱讀 887·2019-08-29 17:00
閱讀 1983·2019-08-29 12:19
閱讀 3321·2019-08-28 18:28
閱讀 701·2019-08-28 18:10