最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

一文讓你徹底學(xué)會(huì)Java左移、右移操作

 更新時(shí)間:2025年02月21日 11:12:17   作者:憑君語未可  
這篇文章主要介紹了了Java中的位運(yùn)算符,包括左移(<<)、右移(>>)和無符號(hào)右移(>>>),左移將數(shù)字的二進(jìn)制位向左移動(dòng),相當(dāng)于乘以2的n次方;右移將數(shù)字的二進(jìn)制位向右移動(dòng),保留符號(hào)位,相當(dāng)于除以2的n次方,文中介紹的非常詳細(xì),需要的朋友可以參考下

在Java中,左移 ( <<) 和右移 ( >>) 是位運(yùn)算符,用于對(duì)二進(jìn)制數(shù)進(jìn)行移位操作。移位操作會(huì)對(duì)數(shù)字的位模式進(jìn)行直接操作。

1. 左移運(yùn)算符(<<)

功能:

  • 左移操作會(huì)將一個(gè)數(shù)字的二進(jìn)制位向左移動(dòng)指定的位數(shù),右邊用 0 填充。
  • 每向左移動(dòng)一位,相當(dāng)于該數(shù)字乘以2(但不是嚴(yán)格意義上的乘法,可能會(huì)導(dǎo)致溢出)。

語法:

result = value << n;
  • value 是要操作的數(shù)字。
  • n 是移動(dòng)的位數(shù)。

特點(diǎn):

  • 左移后會(huì)擴(kuò)大數(shù)字的值(如果沒有溢出的話)。
  • 右邊補(bǔ)0。
  • 如果是負(fù)數(shù),二進(jìn)制會(huì)以補(bǔ)碼形式參與計(jì)算。

示例:

int a = 5; // 二進(jìn)制:00000000 00000000 00000000 00000101
int result = a << 2; // 左移2位:00000000 00000000 00000000 00010100(20)
System.out.println(result); // 輸出:20

2. 右移運(yùn)算符(>>)

功能:

  • 右移操作會(huì)將一個(gè)數(shù)字的二進(jìn)制位向右移動(dòng)指定的位數(shù)。
  • 符號(hào)位擴(kuò)展:如果是正數(shù),高位用0填充;如果是負(fù)數(shù),高位用1填充(即符號(hào)位保持不變)。
  • 每向右移動(dòng)一位,相當(dāng)于該數(shù)字除以2(向下取整)。

語法:

result = value >> n;
  • value 是要操作的數(shù)字。
  • n 是移動(dòng)的位數(shù)。

特點(diǎn):

  • 對(duì)于正數(shù),右移后高位用0填充。
  • 對(duì)于負(fù)數(shù),右移后高位用1填充(符號(hào)位擴(kuò)展)。
  • 適合處理帶符號(hào)的數(shù)字。

示例:

int a = 20; // 二進(jìn)制:00000000 00000000 00000000 00010100
int result = a >> 2; // 右移2位:00000000 00000000 00000000 00000101(5)
System.out.println(result); // 輸出:5

int b = -20; // 二進(jìn)制:11111111 11111111 11111111 11101100(補(bǔ)碼表示)
int result2 = b >> 2; // 右移2位:11111111 11111111 11111111 11111011(-5)
System.out.println(result2); // 輸出:-5

3. 無符號(hào)右移運(yùn)算符(>>>)

除了 >>,Java 還提供了 無符號(hào)右移運(yùn)算符 >>>

  • 無論正數(shù)還是負(fù)數(shù),高位都用 0 填充。
  • 通常用于操作無符號(hào)數(shù)據(jù)。

示例:

int a = -20; // 二進(jìn)制:11111111 11111111 11111111 11101100(補(bǔ)碼表示)
int result = a >>> 2; // 無符號(hào)右移2位:00111111 11111111 11111111 11111011
System.out.println(result); // 輸出:1073741819

總結(jié)

操作符名稱功能
<<左移二進(jìn)制向左移,右邊補(bǔ)0,相當(dāng)于乘以2的n次方(如果不溢出)。
>>符號(hào)右移二進(jìn)制向右移,保留符號(hào)位,高位補(bǔ)符號(hào)位(正數(shù)補(bǔ)0,負(fù)數(shù)補(bǔ)1),相當(dāng)于除以2的n次方。
>>>無符號(hào)右移二進(jìn)制向右移,高位總是補(bǔ)0,不考慮符號(hào)位。

擴(kuò)展:i <<= j

  • 在Java中,i <<= j 是一個(gè)復(fù)合運(yùn)算符,它等價(jià)于 i = i << j,表示將 i 的二進(jìn)制位向左移動(dòng) j 位,然后將結(jié)果賦值給 i。即將 i 左移j位,相當(dāng)于 i 乘以 2 的 j 次方。

運(yùn)算過程

  • i 的二進(jìn)制形式會(huì)向左移動(dòng) j 位。
  • 移位后,低位用 0 補(bǔ)充,高位可能會(huì)溢出(超出當(dāng)前數(shù)據(jù)類型范圍的部分會(huì)被丟棄)。
  • 最終結(jié)果存回變量 i。

示例

示例1:對(duì)正數(shù)進(jìn)行左移

public class Main {
    public static void main(String[] args) {
        int i = 5; // 二進(jìn)制:00000000 00000000 00000000 00000101
        int j = 2;

        i <<= j; // 等價(jià)于 i = i << j
        // 左移2位:00000000 00000000 00000000 00010100 (20)

        System.out.println(i); // 輸出:20
    }
}

示例2:對(duì)負(fù)數(shù)進(jìn)行左移

public class Main {
    public static void main(String[] args) {
        int i = -5; // 二進(jìn)制(補(bǔ)碼):11111111 11111111 11111111 11111011
        int j = 2;

        i <<= j; // 等價(jià)于 i = i << j
        // 左移2位:11111111 11111111 11111111 11101100 (-20)

        System.out.println(i); // 輸出:-20
    }
}

示例3:可能的溢出問題

public class Main {
    public static void main(String[] args) {
        int i = 1073741824; // 二進(jìn)制:01000000 00000000 00000000 00000000
        int j = 1;

        i <<= j; // 左移1位:10000000 00000000 00000000 00000000
        // 超過32位,結(jié)果變?yōu)樨?fù)數(shù)(溢出)
        
        System.out.println(i); // 輸出:-2147483648
    }
}

注意點(diǎn)

  • 左移等價(jià)于乘以2的冪

    • 每向左移1位,相當(dāng)于乘以2。
    • 例如:5 <<= 1 等價(jià)于 5 * 2 = 10,5 <<= 2 等價(jià)于 5 * 4 = 20
    • 注意,左移不會(huì)檢查溢出問題,可能導(dǎo)致負(fù)數(shù)或錯(cuò)誤的結(jié)果。
  • 溢出問題

    • 移位可能會(huì)導(dǎo)致高位被截?cái)?,特別是當(dāng)操作數(shù)接近數(shù)據(jù)類型的最大值時(shí)。
  • 適用數(shù)據(jù)類型

    • 左移操作支持整型和長整型(int 和 long)。
    • 如果操作的類型小于 int(比如 byte 或 short),會(huì)被提升為 int 再執(zhí)行移位運(yùn)算。

總結(jié) 

到此這篇關(guān)于Java左移、右移操作的文章就介紹到這了,更多相關(guān)Java左移、右移操作內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Spring Boot接口限流的常用算法及特點(diǎn)

    Spring Boot接口限流的常用算法及特點(diǎn)

    這篇文章主要給大家介紹了關(guān)于Spring Boot接口限流的常用算法及特點(diǎn)的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • 如何使用Spring RestTemplate訪問restful服務(wù)

    如何使用Spring RestTemplate訪問restful服務(wù)

    這篇文章主要介紹了如何使用Spring RestTemplate訪問restful服務(wù),詳細(xì)的介紹了什么是RestTemplate以及簡單實(shí)現(xiàn),非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2018-10-10
  • mybatis中insert返回值為1,但數(shù)據(jù)庫卻沒有數(shù)據(jù)

    mybatis中insert返回值為1,但數(shù)據(jù)庫卻沒有數(shù)據(jù)

    這篇文章主要介紹了mybatis中insert返回值為1,但數(shù)據(jù)庫卻沒有數(shù)據(jù),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • Spring?Boot?利用注解方式整合?MyBatis

    Spring?Boot?利用注解方式整合?MyBatis

    這篇文章主要介紹了Spring?Boot?利用注解方式整合?MyBatis,文章圍繞主主題的相關(guān)資料展開詳細(xì)的內(nèi)容介紹,需要的小伙伴可以參考一下
    2022-05-05
  • 實(shí)例化JFileChooser對(duì)象報(bào)空指針異常問題的解決辦法

    實(shí)例化JFileChooser對(duì)象報(bào)空指針異常問題的解決辦法

    今天小編就為大家分享一篇關(guān)于實(shí)例化JFileChooser對(duì)象報(bào)空指針異常問題的解決辦法,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-02-02
  • java去除空格、標(biāo)點(diǎn)符號(hào)的方法實(shí)例

    java去除空格、標(biāo)點(diǎn)符號(hào)的方法實(shí)例

    這篇文章主要給大家介紹了關(guān)于java去除空格、標(biāo)點(diǎn)符號(hào)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • 使用java NIO及高速緩沖區(qū)寫入文件過程解析

    使用java NIO及高速緩沖區(qū)寫入文件過程解析

    這篇文章主要介紹了使用java NIO及高速緩沖區(qū)寫入文件過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-09-09
  • feign調(diào)用跳過HTTPS的SSL證書校驗(yàn)配置過程

    feign調(diào)用跳過HTTPS的SSL證書校驗(yàn)配置過程

    Feign默認(rèn)驗(yàn)證SSL證書,若服務(wù)器使用自簽名或內(nèi)部CA證書會(huì)導(dǎo)致連接失敗,解決方法是跳過校驗(yàn),但僅限測試環(huán)境,生產(chǎn)環(huán)境需嚴(yán)格驗(yàn)證以確保安全
    2025-07-07
  • java 直接調(diào)用python腳本,并傳遞參數(shù)代碼實(shí)例

    java 直接調(diào)用python腳本,并傳遞參數(shù)代碼實(shí)例

    這篇文章主要介紹了java調(diào)用python腳本傳遞參數(shù)的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • Spring Boot 使用 logback、logstash、ELK 記錄日志文件的方法

    Spring Boot 使用 logback、logstash、ELK 記錄日志文件的方法

    這篇文章主要介紹了Spring Boot 使用 logback、logstash、ELK 記錄日志文件的思路詳解,文中給大家提到了logback 取代 log4j的理由,需要的朋友可以參考下
    2017-12-12

最新評(píng)論

海门市| 原平市| 富裕县| 蚌埠市| 武安市| 齐齐哈尔市| 元江| 霸州市| 清河县| 西宁市| 定兴县| 丘北县| 玉林市| 竹山县| 开原市| 卓尼县| 开远市| 东海县| 巴塘县| 广昌县| 抚顺市| 武乡县| 开江县| 富裕县| 宝兴县| 顺义区| 大荔县| 海林市| 紫金县| 荣成市| 出国| 通许县| 奇台县| 许昌县| 昔阳县| 昌乐县| 乐亭县| 乐安县| 滦南县| 江阴市| 宁阳县|