日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java 左移 返回值_java左移右移运算符详解

發布時間:2023/12/4 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 左移 返回值_java左移右移运算符详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在閱讀源碼的過程中,經常會看到這些符號<< ,>>,>>>,這些符號在Java中叫移位運算符,在寫代碼的過程中,雖然我們基本上不會去寫這些符號,但需要明白這些符號的運算原理,比如HashMap中有以下代碼:

static final int DEFAULT_INITIAL_CAPACITY = 1 << 4;//左移

static final int hash(Object key) {

int h;

return (key == null) ? 0 : (h = key.hashCode()) ^ (h >>> 16);//無符號右移

}

上段代碼中就包含左移運算符<>>。這篇文章詳細說一下這三個符號:

1、左移運算符:<<

先隨便定義一個int類型的數int,十進制的value = 733183670,轉換成二進制在計算機中的表示如下:

value << 1,左移1位

左移1位后換算成十進制的值為:1466367340,剛好是733183670的兩倍, 有些人在乘2操作時喜歡用左移運算符來替代。

value << 8,左移8位看一下:

左移8位后變成了十進制的值為:-1283541504,移動8位后,由于首位變成了1,也就是說成了負數,在使用中要考慮變成負數的情況。

根據這個規則,左移32位后,右邊補上32個0值是不是就變成了十進制的0了?答案是NO,當int類型進行左移操作時,左移位數大于等于32位操作時,會先求余(%)后再進行左移操作。也就是說左移32位相當于不進行移位操作,左移40位相當于左移8位(40%32=8)。當long類型進行左移操作時,long類型在二進制中的體現是64位的,因此求余操作的基數也變成了64,也就是說左移64位相當于沒有移位,左移72位相當于左移8位(72%64=8),寫一段代碼來測試一下

int intValue = 733183670;//隨意寫一個數

System.out.println("intValue:" + (intValue));//打印intValue

System.out.println("intValue左移1位:" + (intValue << 1));//左移1位

System.out.println("intValue左移8位:" + (intValue << 8));//左移8位

//當int類型左移位數大于等于32位操作時,會先求余后再進行移位操作

System.out.println("intValue左移32位:" + (intValue << 32));//求余為32%32=0,相當于左移0位(不移位)

System.out.println("intValue左移40位:" + (intValue << 40));//求余為40%32=8,相當于左移8位

System.out.println("intValue左移64位:" + (intValue << 64));//求余為64%32=0,相當于左移0位(不移位)

long longValue = 733183670L;

System.out.println("longValue:" + (longValue));//打印longValue

System.out.println("longValue左移1位:" + (longValue << 1));//左移1位

System.out.println("longValue左移8位:" + (longValue << 8));//左移8位

//當long類型左移位數大于等于64位操作時,會先求余后再進行移位操作

System.out.println("longValue左移64位:" + (longValue << 64));//求余為64%64=0,相當于左移0位(不移位)

System.out.println("longValue左移72位:" + (longValue << 72));//求余為72%64=8,相當于左移8位

System.out.println("longValue左移128位:" + (longValue << 128));//求余為128%64=0,相當于左移0位(不移位)

看一下結果:

由于double,float在二進制中的表現比較特殊,因此不能來進行移位操作,報錯,編譯不過,如下圖:

注意:其它幾種整形byte,short移位前會先轉換為int類型(32位)再進行移位,這里就不寫代碼測試了,大家有興趣可自行測試。

綜上所述:左移 << 其實很簡單,也就是說丟棄左邊指定位數,右邊補0。

2、右移運算符:>>

還是這個數:733183670

value >> 1,右移1位

右移1位后換算成十進制的值為:366591835,剛好是733183670的1半, 有些人在除2操作時喜歡用右移運算符來替代

value >> 8,右移8位看一下

寫一段代碼測試一下

int intValue = 733183670;//隨意寫一個數

System.out.println("intValue:" + (intValue));//打印intValue

System.out.println("intValue右移1位:" + (intValue >> 1));//右移1位

System.out.println("intValue右移8位:" + (intValue >> 8));//右移8位

//當int類型右移位數大于等于32位操作時,會先求余后再進行移位操作

System.out.println("intValue右移32位:" + (intValue >> 32));//求余為32%32=0,相當于右移0位(不移位)

System.out.println("intValue右移40位:" + (intValue >> 40));//求余為40%32=8,相當于右移8位

System.out.println("intValue右移64位:" + (intValue >> 64));//求余為64%32=0,相當于右移0位(不移位)

long longValue = 733183670L;

System.out.println("longValue:" + (longValue));//打印longValue

System.out.println("longValue右移1位:" + (longValue >> 1));//右移1位

System.out.println("longValue右移8位:" + (longValue >> 8));//右移8位

//當long類型右移位數大于等于64位操作時,會先求余后再進行移位操作

System.out.println("longValue右移64位:" + (longValue >> 64));//求余為64%64=0,相當于右移0位(不移位)

System.out.println("longValue右移72位:" + (longValue >> 72));//求余為72%64=8,相當于右移8位

System.out.println("longValue右移128位:" + (longValue >> 128));//求余為128%64=0,相當于右移0位(不移位)

結果:

和左移一樣,int類型移位大于等于32位時,long類型大于等于64位時,會先做求余處理再位移處理,byte,short移位前會先轉換為int類型(32位)再進行移位。以上是正數的位移,我們再來看看負數的右移運算,如圖,負數intValue:-733183670的二進制表現如下圖:

右移8位,intValue >> 8

綜上所述:右移運算符>>的運算規則也很簡單,丟棄右邊指定位數,左邊補上符號位。

3、無符號右移運算符:>>>

無符號右移運算符>>>和右移運算符>>是一樣的,只不過右移時左邊是補上符號位,而無符號右移運算符是補上0,也就是說,對于正數移位來說等同于:>>,負數通過此移位運算符能移位成正數。以-733183670>>>8為例來畫一下圖

無符號右移運算符>>的運算規則也很簡單,丟棄右邊指定位數,左邊補上0。

摘自https://zhuanlan.zhihu.com/p/30108890

總結

以上是生活随笔為你收集整理的java 左移 返回值_java左移右移运算符详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日本一区免费电影 | 六月丁香综合 | 老色批影院 | 亚洲免费一级片 | 91精品免费观看 | 中文字幕超清在线观看 | 观看毛片 | 亚洲蜜臀av乱码久久精品蜜桃 | 先锋影音av资源站 | 爱臀av| 亚洲激情国产 | 在线观看av片 | av色图在线 | 伊人手机视频 | 日韩一区二区三区不卡视频 | 含羞草一区二区三区 | 亚洲美女性视频 | 六月婷婷在线 | 国产午夜精品久久久久久久久久 | 久操国产视频 | 中文字幕人妻熟女在线 | 国产无套在线观看 | 一本一道波多野结衣av黑人 | 成人在线免费播放 | 日韩有码中文字幕在线 | 国产精品黑人一区二区三区 | aa片在线观看视频在线播放 | 亚洲欧美另类在线视频 | 欧美成人生活片 | 免费一级a毛片 | 不卡一区在线观看 | 日韩精品一区二区三区视频在线观看 | 亚洲激情图| 粉嫩av蜜桃av蜜臀av | 亚洲一线在线观看 | 男人天堂新地址 | 久久色播 | 欧美日韩成人一区二区在线观看 | 欧美一级二级三级 | 国产av人人夜夜澡人人爽 | 看一级黄色大片 | 亚洲人在线观看 | 久久av高潮av无码av喷吹 | 女人扒开屁股让我添 | 91片黄在线观 | 亚洲欧美日本一区 | 撸啊撸av| 日本亲与子乱xxx | 中国免费看的片 | 色婷婷综合成人 | 国产精品69久久久久孕妇欧美 | 西比尔在线观看完整视频高清 | 二级黄色大片 | 国产美女精品久久久 | 色婷婷av一区二区 | 伊人亚洲天堂 | 麻豆视频一区二区 | 污视频网站入口 | 中文字幕在线高清 | 好吊视频一区二区三区 | av免播放器在线观看 | 国产肉体ⅹxxx137大胆 | 少妇高潮毛片 | 国产女人18毛片18精品 | 蘑菇视频黄色 | 一区二区三区四区中文字幕 | 视频在线观看免费 | 天堂网www | 永久在线视频 | 午夜黄色av | 久久中文字幕在线 | 亚洲欧美激情在线观看 | 亚洲图片欧美激情 | 日本美女一区二区 | 日本视频免费看 | 国产美女激情视频 | 婷婷综合视频 | 黑人操日本女人视频 | 亚洲色图另类小说 | 亚洲无限av | 老外毛片 | 苍井空浴缸大战猛男120分钟 | 日韩黄色三级 | 无码人妻熟妇av又粗又大 | a在线播放 | 纯爱无遮挡h肉动漫在线播放 | 国产黄色片免费观看 | 无套内谢的新婚少妇国语播放 | 性视频在线| 污污的视频网站在线观看 | 久久久午夜视频 | 被黑人啪到哭的番号922在线 | 亚洲美女偷拍 | 男人天堂网站 | 日本五十路女优 | 久久国语精品 | 黄色片大全 | 亚洲国产婷婷香蕉久久久久久99 | 午夜色婷婷 |