" />

亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

一定要讓你搞懂Java位運算符

 更新時間:2022年01月05日 15:18:35   作者:賀賀學編程  
這篇文章主要為大家介紹了Java位運算符,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助

常用的運算符

在Java語言中,官方給我們提供了極為豐富的運算操作,但是常用的,好像也就是算術(shù)運算符,例如加、減、乘、除、取余等。還有就是關(guān)系運算符大于、小于、等于、不等于等。再或者就是邏輯運算符&&、||、!等,至于位運算符,屬實用的不多。用的不多今天為什么拿出來講呢,首先這可以幫助你很好的去理解計算機的底層原理,其次可以讓你在面試中略勝一籌,還有就是有些人分不清邏輯運算符和位運算符的區(qū)別,例如&&和&,||和|,區(qū)別分別是什么,反正剛開始我是有點迷惑,所以這篇文章呢,也算是為自己解惑了。

位運算符

位運算符,從字面意思上看,就可以知道,是位運算,其實并不難,只是我們不經(jīng)常用,再加上跟邏輯運算符的混淆,所以就容易讓人迷迷糊糊。這里主要講解&、|、^、~、>>、<<、>>>。其中 ~ 和 >>> 較為復(fù)雜。

&、|、^ 運算符

&是按位與,|是按位或、^是按位異或,這三種位運算相對簡單,下面給出程序截圖,大家應(yīng)該可以一目了然。
 

~ 運算符

首先我們要清楚,數(shù)字在計算機中是以二進制存儲的,準確的說是以二進制的補碼形式存儲的,我們看到的數(shù)一般是以二進制的原碼形式轉(zhuǎn)化為十進制展示的,正數(shù)的原碼、反碼、補碼是其本身,而負數(shù)的反碼是符號位不變,其余取反。負數(shù)的補碼是其反碼+1。這里通過簡單的例子,來解釋原碼、反碼、補碼。
我們以數(shù)字5為例,這里通過一個字節(jié)來進行講解。5的原碼是00000101,反碼也是00000101,補碼還是00000101,其中在計算機存儲的是補碼。如果對5進行取反是什么呢,5的原碼取反之后是11111010,提醒:(最高位1表示該數(shù)是負數(shù),0表示該數(shù)是正數(shù))。但是計算機中存儲的是補碼,按上面所說的,負數(shù)的補碼是反碼加1。反碼是10000101(負數(shù)的反碼是不改變符號位哦),這里的第一個1就是是表示符號,再加1,就是補碼10000110,也就是我們看到的-6。說明:取反是把所有的1變成0,所有的0變成1,反碼是除了符號位不變,其余的1變0,0變1。

<< 和 >> 運算符

簡單的理解,<<1 是乘2,>>1是除以2,其中正數(shù)右移是前補0,負數(shù)右移是前補1。這里的運算要比* /的速度快,看JDK原碼的時候,大家應(yīng)該都見過這些符號。
 

>>> 運算符

這個是無符號右移,什么叫無符號呢,首先說一下什么是有符號右移,有符號右移,也就是,當該數(shù)字是正數(shù),右移前補0,當該數(shù)字是負數(shù),右移前補1。而無符號右移不管是正數(shù)還是負數(shù),都是前補0。這里以-5為例子進行講解,通過無符號右移,負數(shù)變正數(shù)。

有<<<運算符嗎

先說結(jié)論,是沒有<<<運算符的,因為我們知道在右移的時候,存在著高位是補0還是補1的選擇,如果是普通的右移,根據(jù)原數(shù)字的正負來決定是補0還是補1,而無符號右移,則高位通通補1。因為高位是決定一個數(shù)的正負的,而在左移的時候,是在最低位補0,高位的數(shù)字是由高位右邊的第一個數(shù)字決定的,所以不存在補0還是補1的情況,所以沒有無符號左移。

為什么8位是-128 ~ 127

既然聊到這了,順便解釋一下,為什么占8位的數(shù)字范圍是-128 ~ 127,首先,我們要注意0這個數(shù)是屬于 -128 ~ 127的,也就是說,這一共有256個數(shù)字,而127的二進制表示就是0111 1111,0的二進制是0000 0000,1000 0000,這個按說是-0,但是0和-0是不是就重復(fù)了,所以規(guī)定-0就表示-128,也就是1000 0000表示-128,1111 1111這個二進制表示的是-127哦。

總結(jié)

本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!

相關(guān)文章

  • 關(guān)于Java的Condition接口最佳理解方式

    關(guān)于Java的Condition接口最佳理解方式

    這篇文章主要介紹了關(guān)于Java的Condition接口最佳理解方式,Condition就是實現(xiàn)了管程里面的條件變量,Java?語言內(nèi)置的管程里只有一個條件變量,而Lock&Condition實現(xiàn)的管程支持多個條件變量,需要的朋友可以參考下
    2023-05-05
  • spring-boot中spring-boot-maven-plugin報紅錯誤及解決

    spring-boot中spring-boot-maven-plugin報紅錯誤及解決

    這篇文章主要介紹了spring-boot中spring-boot-maven-plugin報紅錯誤及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • 詳解MyBatis-Plus Wrapper條件構(gòu)造器查詢大全

    詳解MyBatis-Plus Wrapper條件構(gòu)造器查詢大全

    這篇文章主要介紹了詳解MyBatis-Plus Wrapper條件構(gòu)造器查詢大全,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-08-08
  • 深入淺析Random類在高并發(fā)下的缺陷及JUC對其的優(yōu)化

    深入淺析Random類在高并發(fā)下的缺陷及JUC對其的優(yōu)化

    這篇文章主要介紹了Random類在高并發(fā)下的缺陷及JUC對其的優(yōu)化 ,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-04-04
  • shade解決mybatis包沖突問題

    shade解決mybatis包沖突問題

    這篇文章主要介紹了shade解決mybatis包沖突問題,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-08-08
  • Java Spring IOC圖文詳解

    Java Spring IOC圖文詳解

    IoC是一種讓服務(wù)消費者不直接依賴于服務(wù)提供者的組件設(shè)計方式,是一種減少類與類之間依賴的設(shè)計原則。下面通過本文給大家分享spring中ioc的概念,感興趣的朋友一起看看吧
    2021-09-09
  • Java高級特性基礎(chǔ)之反射五連問

    Java高級特性基礎(chǔ)之反射五連問

    反射賦予了我們在運行時分析類以及執(zhí)行類中方法的能力。通過反射你可以獲取任意一個類的所有屬性和方法,你還可以調(diào)用這些方法和屬性。本文就來和大家詳細聊聊Java中的反射,感興趣的可以了解一下
    2023-01-01
  • IDEA報錯:Process terminated的問題及解決

    IDEA報錯:Process terminated的問題及解決

    這篇文章主要介紹了IDEA報錯:Process terminated的問題及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • Java中成員方法與成員變量訪問權(quán)限詳解

    Java中成員方法與成員變量訪問權(quán)限詳解

    在Java學習過程中,在寫類經(jīng)常為用到public,private和protected,我個人的經(jīng)驗是一般類的成員變量都是用private,方法用public,類的內(nèi)部用protected方法,如果是存在子類的,那我就會把父類中的成員變量變?yōu)閜rotected。(其余的看具體實際情 況而定)
    2015-08-08
  • Java 判斷字符串a(chǎn)和b是否互為旋轉(zhuǎn)詞

    Java 判斷字符串a(chǎn)和b是否互為旋轉(zhuǎn)詞

    本篇文章主要介紹了判斷字符串a(chǎn)和b是否互為旋轉(zhuǎn)詞的相關(guān)知識,具有很好的參考價值。下面跟著小編一起來看下吧
    2017-05-05

最新評論