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

Java運(yùn)算符解密之位運(yùn)算、移位運(yùn)算舉例詳解

 更新時(shí)間:2025年04月22日 09:50:30   作者:嶼小夏  
這篇文章主要介紹了Java運(yùn)算符解密之位運(yùn)算、移位運(yùn)算的相關(guān)資料,Java中的位運(yùn)算符包括按位與&、按位或|、按位取反~和按位異或^,用于對(duì)數(shù)據(jù)的二進(jìn)制位進(jìn)行操作,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下

前言

位運(yùn)算符是Java中的重要運(yùn)算符之一,用于對(duì)數(shù)據(jù)的二進(jìn)制位進(jìn)行操作。Java中的位運(yùn)算符包括按位與(&)、按位或(|)、按位取反(~)和按位異或(^)。這些運(yùn)算符可以幫助我們進(jìn)行位級(jí)操作,對(duì)于某些特定的問題解決方案非常有用。本文將深入探討Java中的位運(yùn)算符的用法、規(guī)則以及注意事項(xiàng),幫助讀者更好地理解和應(yīng)用這些運(yùn)算符。

一、位運(yùn)算符

java 中數(shù)據(jù)存儲(chǔ)的最小單位是字節(jié),而數(shù)據(jù)操作的最小單位是比特位. 字節(jié)是最小的存儲(chǔ)單位,每個(gè)字節(jié)是由8個(gè)二進(jìn)制比特位組成的,多個(gè)字節(jié)組合在一起可以表示各種不同的數(shù)據(jù)。

位運(yùn)算符主要有四個(gè): & | ~ ^ ,除 ~ 是一元運(yùn)算符外,其余都是二元運(yùn)算符。

位操作表示 按二進(jìn)制位運(yùn)算. 計(jì)算機(jī)中都是使用二進(jìn)制來表示數(shù)據(jù)的(01構(gòu)成的序列), 按位運(yùn)算就是在按照二進(jìn)制位的每一位依次進(jìn)行計(jì)算。

1.1 按位與 &

按位與運(yùn)算符(&)會(huì)對(duì)兩個(gè)整數(shù)的每一位進(jìn)行比較。只有當(dāng)兩個(gè)相應(yīng)的位都是1時(shí),結(jié)果中的該位才會(huì)是1,否則為0。這個(gè)操作常用于屏蔽某些位或檢查特定位是否設(shè)置。

int a = 10;
int b = 20;
System.out.println(a & b);

進(jìn)行按位運(yùn)算, 需要先把 10 和 20 轉(zhuǎn)成二進(jìn)制, 分別為 1010 和 10100

在這里插入圖片描述

1.2 按位或 |

如果兩個(gè)二進(jìn)制位都是 0, 則結(jié)果為 0, 否則結(jié)果為 1

int a = 10;
int b = 20;
System.out.println(a | b);

運(yùn)算方式和按位于類似

在這里插入圖片描述

注意:

當(dāng) & 和 | 的操作數(shù)為整數(shù)(int, short, long, byte) 的時(shí)候, 表示按位運(yùn)算, 當(dāng)操作數(shù)為 boolean 的時(shí)候, 表示邏輯運(yùn)算。

1.3 按位取反 ~

如果該二進(jìn)制位為 0 則轉(zhuǎn)為 1, 如果該二進(jìn)制位為 1 則轉(zhuǎn)為 0

int a = 0xf;
System.out.printf("%x\n", ~a)
//fffffff0

注意:

  • 0x 前綴的數(shù)字為 十六進(jìn)制 數(shù)字. 十六進(jìn)制可以看成是二進(jìn)制的簡化表示方式. 一個(gè)十六進(jìn)制數(shù)字對(duì)應(yīng)4個(gè)二進(jìn)制位
  • 0xf 表示 10 進(jìn)制的 15, 也就是二進(jìn)制的 1111
  • printf 能夠格式化輸出內(nèi)容, %x 表示按照十六進(jìn)制輸出
  • \n 表示換行符

1.4 按位異或^

按位異或運(yùn)算符(^)會(huì)對(duì)兩個(gè)整數(shù)的每一位進(jìn)行比較。如果兩個(gè)相應(yīng)的位相同(都是0或都是1),則結(jié)果中的該位為0;如果兩個(gè)位不同,則結(jié)果為1。

int a = 0x1;
int b = 0x2;
System.out.printf("%x\n", a ^ b);

注意:如果兩個(gè)數(shù)相同,則異或的結(jié)果為0

二、移位運(yùn)算符

移位運(yùn)算符有三個(gè): << >> >>> ,都是二元運(yùn)算符,且都是按照二進(jìn)制比特位來運(yùn)算的。

1.1 左移<<

最左側(cè)位不要了, 最右側(cè)補(bǔ) 0

int a = 0x10;
System.out.printf("%x\n", a << 1);
// 運(yùn)行結(jié)果(注意, 是按十六進(jìn)制打印的)
20

注意:向左移位時(shí),丟棄的是符號(hào)位,因此正數(shù)左移可能會(huì)變成負(fù)數(shù)

1.2 右移>>

最右側(cè)位不要了, 最左側(cè)補(bǔ)符號(hào)位(正數(shù)補(bǔ)0, 負(fù)數(shù)補(bǔ)1)

int a = 0x10;
System.out.printf("%x\n", a >> 1);
// 運(yùn)行結(jié)果(注意, 是按十六進(jìn)制打印的)
8 in
t b = 0xffff0000;
System.out.printf("%x\n", b >> 1);
// 運(yùn)行結(jié)果(注意, 是按十六進(jìn)制打印的)
ffff8000

1.3 無符號(hào)右移>>>

最右側(cè)位不要了, 最左側(cè)補(bǔ) 0

int a = 0xffffffff;
System.out.printf("%x\n", a >>> 1);
// 運(yùn)行結(jié)果(注意, 是按十六進(jìn)制打印的)
7fffffff

注意:

  • 左移 1 位, 相當(dāng)于原數(shù)字 * 2. 左移 N 位, 相當(dāng)于原數(shù)字 * 2 的N次方.
  • 右移 1 位, 相當(dāng)于原數(shù)字 / 2. 右移 N 位, 相當(dāng)于原數(shù)字 / 2 的N次方.
  • 由于計(jì)算機(jī)計(jì)算移位效率高于計(jì)算乘除, 當(dāng)某個(gè)代碼正好乘除 2 的N次方的時(shí)候可以用移位運(yùn)算代替.
  • 移動(dòng)負(fù)數(shù)位或者移位位數(shù)過大都沒有意義

全篇總結(jié)

本篇詳細(xì)介紹了Java中的位運(yùn)算符。位運(yùn)算符包括按位與(&)、按位或(|)、按位取反(~)和按位異或(^),它們用于對(duì)數(shù)據(jù)的二進(jìn)制位進(jìn)行操作。通過位運(yùn)算符,我們可以進(jìn)行屏蔽位、檢查位狀態(tài)等處理,頻繁出現(xiàn)在底層編程、位運(yùn)算加密等場景中。在使用這些運(yùn)算符時(shí),需要理解它們的運(yùn)算規(guī)則,注意正負(fù)數(shù)的影響以及運(yùn)算符的優(yōu)先級(jí)。通過合理運(yùn)用這些運(yùn)算符,能夠提高代碼的效率和性能,同時(shí)也解決一些特定問題。

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

相關(guān)文章

  • 并發(fā)編程之Java內(nèi)存模型鎖的內(nèi)存語義

    并發(fā)編程之Java內(nèi)存模型鎖的內(nèi)存語義

    這篇文章主要介紹了并發(fā)編程之Java內(nèi)存模型鎖的內(nèi)存語義,鎖的作用是讓臨界區(qū)互斥執(zhí)行,本文只要圍繞鎖的內(nèi)存語義展開全文內(nèi)容,需要的小伙伴可以參考一下
    2021-11-11
  • Java 8 引入lambda表達(dá)式的原因解析

    Java 8 引入lambda表達(dá)式的原因解析

    這篇文章主要介紹了Java 8 引入lambda表達(dá)式的原因解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • Java Reference源碼解析

    Java Reference源碼解析

    這篇文章主要為大家詳細(xì)解析了Java Reference源碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • 讓Java代碼更高效

    讓Java代碼更高效

    這篇文章主要介紹了如何讓你的Java代碼更高效,讓Java跑得更快,感興趣的小伙伴們可以參考一下
    2015-09-09
  • Spring JDBC的使用方法詳解

    Spring JDBC的使用方法詳解

    這篇文章主要介紹了Spring JDBC的使用方法詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-09-09
  • java ThreadPoolExecutor 并發(fā)調(diào)用實(shí)例詳解

    java ThreadPoolExecutor 并發(fā)調(diào)用實(shí)例詳解

    這篇文章主要介紹了java ThreadPoolExecutor 并發(fā)調(diào)用實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-05-05
  • Java多線程實(shí)現(xiàn)第三方數(shù)據(jù)同步

    Java多線程實(shí)現(xiàn)第三方數(shù)據(jù)同步

    這篇文章主要為大家詳細(xì)介紹了Java多線程實(shí)現(xiàn)第三方數(shù)據(jù)同步,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • Idea 同一窗口導(dǎo)入多個(gè)項(xiàng)目的實(shí)現(xiàn)步驟

    Idea 同一窗口導(dǎo)入多個(gè)項(xiàng)目的實(shí)現(xiàn)步驟

    本文主要介紹了Idea 同一窗口導(dǎo)入多個(gè)項(xiàng)目的實(shí)現(xiàn)步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • idea springboot遠(yuǎn)程debug的操作方法

    idea springboot遠(yuǎn)程debug的操作方法

    這篇文章主要介紹了idea springboot遠(yuǎn)程debug的操作方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-10-10
  • 一文學(xué)會(huì)如何在SpringBoot中使用線程池執(zhí)行定時(shí)任務(wù)

    一文學(xué)會(huì)如何在SpringBoot中使用線程池執(zhí)行定時(shí)任務(wù)

    在開發(fā)現(xiàn)代應(yīng)用程序時(shí),定時(shí)任務(wù)是一項(xiàng)常見的需求,SpringBoot提供了一個(gè)強(qiáng)大的定時(shí)任務(wù)框架,可以輕松地執(zhí)行各種定時(shí)任務(wù),結(jié)合線程池的使用,可以更好地管理任務(wù)的執(zhí)行,提高系統(tǒng)的性能和穩(wěn)定性,本文將介紹如何在Spring Boot中使用線程池執(zhí)行定時(shí)任務(wù)
    2023-06-06

最新評(píng)論

南皮县| 鹿泉市| 东乡县| 阿克苏市| 铜川市| 汤原县| 南城县| 广州市| 乌拉特中旗| 富民县| 大埔县| 霍林郭勒市| 铁岭县| 饶阳县| 嘉祥县| 周宁县| 新密市| 禄劝| 尼木县| 天水市| 当阳市| 扎鲁特旗| 长宁县| 沙田区| 麟游县| 浦县| 平远县| 新野县| 广昌县| 宁夏| 报价| 奈曼旗| 根河市| 敦化市| 涿鹿县| 巴楚县| 甘孜| 治多县| 抚州市| 黑龙江省| 大田县|