當前位置:科普知識站>IT科技>

java|bit

IT科技 閱讀(2.67W)

<link rel="stylesheet" href="https://js.how234.com/third-party/SyntaxHighlighter/shCoreDefault.css" type="text/css" /><script type="text/javascript" src="https://js.how234.com/third-party/SyntaxHighlighter/shCore.js"></script><script type="text/javascript"> SyntaxHighlighter.all(); </script>

java bit是什麼,讓我們一起了解一下?

bit是Binary digit(二進位制數位)的縮寫,意為“位”或“位元”,是計算機運算的基礎。Java中,byte意為位元組,是計算機檔案大小的基本計算單位,1Byte=8bit(1B=8b)。

Byte與bit的關係是怎樣的?

在電腦科學中,bit是表示資訊的最小單位,叫做二進位制位;一般用0和1表示。 

而Byte叫做位元組,由8個位(8bit)組成一個位元組(1Byte),用於表示計算機中的一個字元。bit與Byte之間可以進行換算,其換算關係為:1Byte=8bit(或簡寫為:1B=8b)。在實際應用中一般用簡稱,即1bit簡寫為1b(注意是小寫英文字母b),1Byte簡寫為1B(注意是大寫英文字母B)。

java bit

在java中bit如何具體操作?

Java中資料流的操作很多都是到byte的,但是在許多底層操作中是需要根據一個byte中的bit來做判斷,Java中要根據byte獲得bit,就要進行一些位操作。

具體例項如下:

package com.test;  import java.util.Arrays;  public class T {      /**      * 將byte轉換為一個長度為8的byte陣列,陣列每個值代表bit      */      public static byte[] getBooleanArray(byte b) {          byte[] array = new byte[8];          for (int i = 7; i >= 0; i--) {              array[i] = (byte)(b & 1);              b = (byte) (b >> 1);          }          return array;      }      /**      * 把byte轉為字串的bit      */      public static String byteToBit(byte b) {          return ""                  + (byte) ((b >> 7) & 0x1) + (byte) ((b >> 6) & 0x1)                  + (byte) ((b >> 5) & 0x1) + (byte) ((b >> 4) & 0x1)                  + (byte) ((b >> 3) & 0x1) + (byte) ((b >> 2) & 0x1)                  + (byte) ((b >> 1) & 0x1) + (byte) ((b >> 0) & 0x1);      }      public static void main(String[] args) {          byte b = 0x35; // 0011 0101          // 輸出 [0, 0, 1, 1, 0, 1, 0, 1]          System.out.println(Arrays.toString(getBooleanArray(b)));          // 輸出 00110101          System.out.println(byteToBit(b));          // JDK自帶的方法,會忽略前面的 0          System.out.println(Integer.toBinaryString(0x35));      }  }

輸出內容就是各個 bit 位的 0 和 1 值!

再根據各個Bit的值,返回byte的程式碼:

/**  * 二進位制字串轉byte  */  public static byte decodeBinaryString(String byteStr) {      int re, len;      if (null == byteStr) {          return 0;      }      len = byteStr.length();      if (len != 4 && len != 8) {          return 0;      }      if (len == 8) {// 8 bit處理          if (byteStr.charAt(0) == '0') {// 正數              re = Integer.parseInt(byteStr, 2);          } else {// 負數              re = Integer.parseInt(byteStr, 2) - 256;          }      } else {// 4 bit處理          re = Integer.parseInt(byteStr, 2);      }      return (byte) re;  }