1樓:聽不清啊
1,2:這是因為~x=-x-1
3:^是異或運算,兩個數的二進位制列豎式,相同的異或得0,不同的得1。
4:《是左移運算子,-1的補碼是全1,左移2位後就是111...1100,這補碼就表示為-4。
(取反、左移、按位與、按位異或、按位或)優先順序由高到低的順序排列
2樓:仁昌居士
(取反、左移、按位與、按位異或、按位或)優先順序由高到低的順序排列為專取反 > 左移 > 按位與 > 按位異屬或 > 按位或。
1、~:意思是按位取反,類似於非(!)的關係,取它的反面。
2、<<: 意思是左移,移動二進位制的位。
3、& : 意思是按位與,類似於與(&&)的關係,一假為假。
4、^:意思是按位異或,通俗地說就是相同為0,不同為1.5、|:意思是按位或,類似於或(||)的關係,一真為真。
3樓:章半仙
- -b就是按照你寫的這個順序(右移跟左移優先順序一樣不過你這裡沒寫)...
c語言中關於左移<<運算子的問題
4樓:可愛小爬爬
原因:第一個k<<1只是表示k左移一位,但是這個運算結果並沒有給k而是依舊儲存在計算機cpu中的運算器中,同時你是用%d將這個結果列印出來,用%d格式表示把這個結果看成了int型,即型別擴大為int型,k<<1相當於2*k,在int型中65534沒有出界,所以就是這個結果。
第二個j<<=1;等價於j=j<<1;你看運算的結果給了j,而j是short int型,所以此時j=1111111111111110(最後一位為補進的0),而short int 最多是16位,這樣它的最高位為1,所以是負數,這是個補碼,其原碼為-(1111111111111110-1)按位取反,即為-0000000000000010=-2,最後用%d列印出的就是這個結果
c語言中的位運算子中『按位取反』是怎麼運算的
5樓:非常可愛
使用~按位取反運算的時候,計算機會將運算元所對應的二進位制表示式的每一版
個位進行取反權計算,取反後所得到的值就是~按位取反的運算結果。
例如,假如計算機是32位的,接下來要計算~5的值,計算過程如下:
5 的二進位制表示式為:0000 0000 0000 0000 0000 0000 0000 0101
執行~運算,即~5後: 1111 1111 1111 1111 1111 1111 1111 1010,即結果為-6
以上過程沒有任何問題,但如果忘記了負數的二進位制表達方式,那麼就會對這個結果產生疑問,為什麼1111 1111 1111 1111 1111 1111 1111 1010表示-6,可能會以為它應該表示-10等等,所以,使用~按位取反的另一個關鍵就是理解1111 1111 1111 1111 1111 1111 1111 1010為什麼表示-6,也即理解負數的二進位制表達方式。
擴充套件資料
js取整
~是按位取反運算,~~是取反兩次
在這裡~~的作用是去掉小數部分
因為位運算的操作值要求是整數,其結果也是整數,所以經過位運算的都會自動變成整數
除了~~n 還可以用
n<<0
n>>0n|0
6樓:程式設計師的每一天
c語言經典例子之按位取反運算子
7樓:匿名使用者
位運算中的按位取
抄反操作,使襲用的運算子為~, 其計算原則為:
按照運算元的二進位制值,逐位計算,如果原始值為0,則結果該位上為1, 否則結果該位上為0。
比如char型別的0x78按位取反
~0x78
=~b0111 1000//轉為二進位制值。
=b1000 0111//按位取反。
=0x87
8樓:匿名使用者
~1010的反碼bai是0101
而負數在計
du算機中的表zhi示是用補碼dao,-11求補碼過程:1011取反->0100加1->0101
即專-11等價於~10
括號中的屬是0101
補充說明:是這樣的,1010在32位計算機中的儲存實際上是00001010,取反後是11110101,在計算機中首位是0表示正數,是1表示負數,即11110101表示的是一個負數,即要由11110101求這個負數,即求補碼的逆,步驟:先減1得11110100,再取反,取反時符號位不變,得10001011,即-11。
用4位表示的話可以填0101,或者是8位的11110101
9樓:匿名使用者
計算機儲存的數不是隻有4位的
像32位計算機,儲存int型別的數就用32位所以上面10的二進位制碼專1010,前面還有好屬多0,取反的時候要一起取反
簡單的話,以8位二進位制碼為例
括號中就是11110101,也就是00001010取反的結果這是補碼
-10的補碼是10的補碼(正數的補碼就是原碼)取反加1既然這裡只取反沒加1,所以就是-10-1=-11數轉補碼
正數就是二進位制碼
負數是相反數(即取絕對值)的二進位制碼取反加1補碼轉數
正數(二進位制最高位為0)直接轉
負數(二進位制最高位為1)減1取反轉成十進位制進位制數再加個負號
關於移位運算子的問題,Java移位運算子問題
右側的引數需要進行 模32的運算 這就是求 除以 32,所得到的餘數。那麼,35,除以 32,餘數,就是 3。因此,35,就和 3,等效。都是左移 3 位。都是,乘以 8。1 35,左側的 1,應該是指整型數,是 32 位的數字。一個數字,僅僅才 32 位,對其移位 35 位?超出了總位數,怎麼移?...
C遞增遞減運算子,求助關於遞增遞減運算子( , )過載的問題
對於int等整形來說,來大部分編譯自器都已經做bai過優化,i和i 效率沒差du別 而對於使用者自定義的 zhi型別,過載 運算dao符,type 或者 type 會先返回該型別的臨時複製物件,如果使用者不需要用到這個功能,就造成了無形中的效率降低 而 type 並不會進行復制臨時物件的步驟,所以說...
問一下java的運算子是做什麼運算的
都是位運算,第一個是逐位異或 比較兩個運算元對應的二進位制數,當兩個二進位制位均為1或0時,結果取0,否則取1 第二個是逐位與 比較兩個運算元對應的二進位制數,當兩個二進位制位均為1時,結果取1,否則取0 三位為逐位或 當兩個二進位制位均為0時,取0,否則取1 位運算子。搜尋一下就有很多相關知識了。...