java中的二進(jìn)制運算以使用場景

原文: https://www.javastudy.cloud/articles/2020/02/13/1581600004762.html
更多技術(shù)文章: 公眾號: java技術(shù)大本營

本文知識點

  1. Java 中用二進(jìn)制使用場景
  2. Java 中聲明二進(jìn)制數(shù)據(jù)
  3. Java 中拼接二進(jìn)制數(shù)據(jù)

二進(jìn)制的使用場景

做標(biāo)識用

二進(jìn)制就是只有 0 和 1 這兩個數(shù)。這和我們現(xiàn)實很多場景都類似, 如男/女,是/否,是否已讀等。那么對一個主體的描述, 我們可以有一個二進(jìn)制串來標(biāo)識一系列的 flag.

(小刀已改名為湊心,至于原因嘛, 因為現(xiàn)在在做一個小程序, 估計不久后會和大家見面),如有一個心,同時還有一個描述的二進(jìn)制串 1101. 第一個 1 代表男,第二個 1 代表矮。第三個 0 代表丑, 第三個 1 代表笨。 這樣我們只用 4 位就完成了這些信息的存儲。 4 位轉(zhuǎn)換成十進(jìn)制, 最大也就是 15. 用一個 byte 就可以存這么多信息。

聲明二進(jìn)制數(shù)據(jù)

大體上有三種方式:1,從 String 讀取。 2.從十進(jìn)制數(shù)轉(zhuǎn)。 3.直接聲明,代碼如下所示:

public class BinaryTools {
    public static void main(String[] args) {
        // 1.從String中讀取二進(jìn)制
        String s  = "1101";
        Integer integer = Integer.valueOf(s, 2);
        // 13
        System.out.println(integer);
        // 2.從 10 進(jìn)制數(shù)中讀取二進(jìn)制
        int i1 = 520;
        // 1000001000
        System.out.println(Integer.toBinaryString(i1));
        // 3.直接聲明二進(jìn)制
        int i2 = 0b1101;
        // 13
        System.out.println(i2);
    }
}

拼接二進(jìn)制數(shù)據(jù)

這里要用到位運算符。如 1001. 分別代表四個不同的屬性的狀態(tài)。 我們肯定是一個一個屬性得到的得到性別,要放到從右往左第四個位置上。 得到矮放到從右往左第三位。 依次往下。 代碼如下:

public static void main(String[] args) {
        int i = 0b1;
        int j = 0b1;
        int k = 0b0;
        int m = 0b1;
        // 1000
        int i1 = i << 3;
        // 100
        int j1 = j << 2;
        // 0
        int k1 = k << 1;
        // 這里使用 | 或運算符
        int cx = i1 | j1 | k1 | m;
        // 1101
        System.out.println(Integer.toBinaryString(cx));
    }

拆分二進(jìn)制數(shù)據(jù)

這時候, 我們收到了"1101" 這個二進(jìn)制串, 這時候我們需要拆成四個單獨的標(biāo)識位,主要有兩種情況。1.拿到是一個字符串, 2. 拿到的是二進(jìn)制串。 代碼如下:

public static void main(String[] args) {
        // 如果拿到的是String , 可以直接使用charAt來獲取
        String s  = "1101";
        // 從左往右第二位
        System.out.println(s.charAt(1));
        
        // 如果拿到的是二進(jìn)制, 可以通過 右移后和 1 進(jìn)行與操作 &
        int i = 0b1101;
        // 從左往右第三位
        int r = (i>>(3-1)) & 1;
        System.out.println(Integer.toBinaryString(r));
    }

總結(jié)

在平時工作中, 我們很少直接使用二進(jìn)制和位運算符,但和數(shù)字/標(biāo)識相關(guān)的業(yè)務(wù),如果能用上二進(jìn)制,定能為代碼增色不少! 加油!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • [TOC] 重點:變量&常見數(shù)據(jù)類型概覽 變量的理解 變量三要素 變量使用步驟 變量的特點 常見數(shù)據(jù)類型 引用數(shù)據(jù)...
    我超暖的閱讀 500評論 0 0
  • 1 關(guān)鍵字 1.1 關(guān)鍵字的概述 Java的關(guān)鍵字對java的編譯器有特殊的意義,他們用來表示一種數(shù)據(jù)類型,或...
    哈哈哎呦喂閱讀 783評論 0 0
  • 抽象類(abstract class):抽象類不能創(chuàng)建對象,主要用來創(chuàng)建子類。Java中的抽象類使用 abstra...
    小宇java閱讀 1,361評論 1 26
  • Java是一種可以撰寫跨平臺應(yīng)用軟件的面向?qū)ο蟮某绦蛟O(shè)計語言。Java 技術(shù)具有卓越的通用性、高效性、平臺移植性和...
    Java小辰閱讀 1,175評論 0 2
  • 窩在媽媽懷里,吚吚啞啞說個不停,那是我第一次叫“媽媽”。 身處熱鬧大街,坐在爸爸的肩膀上,那是我第一次有飛一般的感...
    久見心安閱讀 186評論 0 0

友情鏈接更多精彩內(nèi)容