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中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;  }