java - bit
<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中數據流的操作很多都是到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; }