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