Java中左移和右移問題圖文詳解
更新時間:2021年11月21日 10:49:08 作者:CLAY超
左移和右移并不常用,在一些特殊情況下才會使用,比如加解密時,會大量用到,這篇文章主要給大家介紹了關(guān)于Java中左移和右移問題的相關(guān)資料,需要的朋友可以參考下
?1 原碼、反碼、補碼
原碼:將十進制轉(zhuǎn)化為二進制即原碼;
反碼:正數(shù)的反碼與原碼相同,負(fù)數(shù)的反碼(除卻最高位的符號位不變)與原碼相反;
補碼:正數(shù)的補碼與原碼相同,負(fù)數(shù)的補碼(除卻最高位的符號位不變)與原碼的取反加一。
舉例:5 和 -5
5:原碼:0 0000000 00000000 00000000 00000101反碼:0 0000000 00000000 00000000 00000101補碼:0 0000000 00000000 00000000 00000101-5:原碼:1 00000000 00000000 00000000 00000101反碼:1 1111111 11111111 11111111 11111010補碼:1 1111111 11111111 11111111 11111011
2 位移操作
我們需要知道將一個數(shù)字,在計算機中進行移動多少位,例如8<<1代表將8轉(zhuǎn)化為二進制在計算機中左移1位,低位補零;
<<:左移:低位補0
>>:有符號右移:正數(shù)高位補0,負(fù)數(shù)高位補1
>>>:無符號右移,高位補零
為什么沒有無符號左移呢?因為左移的情況下只存在補零的情況。
舉例 :5 和 -5
5<<1原碼:0 0000000 00000000 00000000 00000101左移1位:0 0000000 00000000 00000000 00001010即:10-5<<1原碼:1 00000000 00000000 00000000 00000101補碼:1 1111111 11111111 11111111 11111011左移1位:1 1111111 11111111 11111111 11110110取其補碼:1 0000000 00000000 00000000 00001010即:-105>>1原碼:0 0000000 00000000 00000000 00000101右移1位:0 0000000 00000000 00000000 00000010即:2-5>>1原碼:1 00000000 00000000 00000000 00000101補碼:1 1111111 11111111 11111111 11111011右移1位:1 1111111 11111111 11111111 11111101取其補碼:1 0000000 00000000 00000000 00000011即:-35>>>1:與5>>1一樣,都是高位補0原碼:0 0000000 00000000 00000000 00000101右移1位:0 0000000 00000000 00000000 00000010即:2-5>>>1原碼:1 00000000 00000000 00000000 00000101補碼:1 1111111 11111111 11111111 11111011右移1位:0 1111111 11111111 11111111 11111101即:2147483645
代碼運行截圖

總結(jié):
位移操作很簡單,使用補碼移動,補齊空缺位就行,除了>>:補與最高位一致的;其他移動哪缺哪補零。
在java中無論截圖中的a定義成 byte,short,int哪一種類型,它默認(rèn)都是使用int類型(4字節(jié)32位),你使用long(8字節(jié)64位)
3 補充操作符
~(按位非):
逐位取反
|(按位或):
一真為真1|0=1,0|0=0,1|1=1,0|1=1
&(按位與):
兩真為真1|0=0,0|0=0,1&1=1;0&1=0
^(按位異或):
相異為真1^1=01^0=10^1=10^0=0.
總結(jié)
到此這篇關(guān)于Java中左移和右移問題的文章就介紹到這了,更多相關(guān)Java左移和右移內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java中的javaBean、vo、entity、domain和pojo
這篇文章主要介紹了Java中的javaBean、vo、entity、domain和pojo用法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-12-12java算法題解LeetCode30包含min函數(shù)的棧實例
這篇文章主要為大家介紹了java算法題解LeetCode30包含min函數(shù)的棧實例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-01-01Java優(yōu)先隊列(PriorityQueue)重寫compare操作
這篇文章主要介紹了Java優(yōu)先隊列(PriorityQueue)重寫compare操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-10-10