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

Java運算符解密之位運算、移位運算舉例詳解

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

前言

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

一、位運算符

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

位運算符主要有四個: & | ~ ^ ,除 ~ 是一元運算符外,其余都是二元運算符。

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

1.1 按位與 &

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

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

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

在這里插入圖片描述

1.2 按位或 |

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

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

運算方式和按位于類似

在這里插入圖片描述

注意:

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

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)制的簡化表示方式. 一個十六進(jìn)制數(shù)字對應(yīng)4個二進(jìn)制位
  • 0xf 表示 10 進(jìn)制的 15, 也就是二進(jìn)制的 1111
  • printf 能夠格式化輸出內(nèi)容, %x 表示按照十六進(jìn)制輸出
  • \n 表示換行符

1.4 按位異或^

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

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

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

二、移位運算符

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

1.1 左移<<

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

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

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

1.2 右移>>

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

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

1.3 無符號右移>>>

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

int a = 0xffffffff;
System.out.printf("%x\n", a >>> 1);
// 運行結(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ī)計算移位效率高于計算乘除, 當(dāng)某個代碼正好乘除 2 的N次方的時候可以用移位運算代替.
  • 移動負(fù)數(shù)位或者移位位數(shù)過大都沒有意義

全篇總結(jié)

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

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

相關(guān)文章

  • idea推送項目到gitee中的創(chuàng)建方法

    idea推送項目到gitee中的創(chuàng)建方法

    這篇文章主要介紹了idea推送項目到gitee中的創(chuàng)建方法,本文通過圖文實例相結(jié)合給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-08-08
  • Java設(shè)計模式之初識行為型模式

    Java設(shè)計模式之初識行為型模式

    今天帶大家學(xué)習(xí)Java設(shè)計模式的相關(guān)知識點,文中對Java行為型模式做了非常詳細(xì)的介紹及代碼示例,對正在學(xué)習(xí)java的小伙伴們很有幫助,需要的朋友可以參考下
    2021-06-06
  • 使用SpringBoot發(fā)送郵件的方法詳解

    使用SpringBoot發(fā)送郵件的方法詳解

    這篇文章主要介紹了使用SpringBoot發(fā)送郵件的方法詳解,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2023-05-05
  • SpringBoot Web詳解靜態(tài)資源規(guī)則與定制化處理

    SpringBoot Web詳解靜態(tài)資源規(guī)則與定制化處理

    這篇文章主要介紹了SpringBoot web場景的靜態(tài)資源規(guī)則與定制化,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-06-06
  • Mybatis查詢時,區(qū)分大小寫操作

    Mybatis查詢時,區(qū)分大小寫操作

    這篇文章主要介紹了Mybatis查詢時,區(qū)分大小寫操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • Mybatis分頁插件PageHelper的配置和簡單使用方法(推薦)

    Mybatis分頁插件PageHelper的配置和簡單使用方法(推薦)

    在使用Java Spring開發(fā)的時候,Mybatis算是對數(shù)據(jù)庫操作的利器了。這篇文章主要介紹了Mybatis分頁插件PageHelper的配置和使用方法,需要的朋友可以參考下
    2017-12-12
  • Mybatis添加Ehcache支持的方法

    Mybatis添加Ehcache支持的方法

    mybatis添加ehcache支持非常簡單,只主要在sql映射文件中添加一行代碼就可以實現(xiàn),糾結(jié)是什么代碼呢,這么神奇,帶著這樣問題一起通過本文學(xué)習(xí)吧
    2016-08-08
  • Java微信公眾平臺開發(fā)(7) 公眾平臺測試帳號的申請

    Java微信公眾平臺開發(fā)(7) 公眾平臺測試帳號的申請

    這篇文章主要為大家詳細(xì)介紹了Java微信公眾平臺開發(fā)第七步,微信公眾平臺測試帳號的申請,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-04-04
  • MybatisPlus創(chuàng)建時間不想用默認(rèn)值的問題

    MybatisPlus創(chuàng)建時間不想用默認(rèn)值的問題

    MybatisPlus通過FieldFill注解和MpMetaObjectHandler類支持自動填充字段功能,特別地,可以設(shè)置字段在插入或更新時自動填充創(chuàng)建時間和更新時間,但在特定場景下,如導(dǎo)入數(shù)據(jù)時,可能需要自定義創(chuàng)建時間
    2024-09-09
  • Spring?Boot?Nacos?實現(xiàn)不停服發(fā)布過程詳解

    Spring?Boot?Nacos?實現(xiàn)不停服發(fā)布過程詳解

    這篇文章主要為大家介紹了Spring?Boot?Nacos實現(xiàn)不停服發(fā)布過程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-05-05

最新評論