1. bit:位
一个二进制数据0或1,是1bit;
2. byte:字节
存储空间的基本计量单位,如:MySQL中定义 VARCHAR(45) 即是指 45个字节;
1 byte = 8 bit
3. 一个英文字符占一个字节;
1 字母 = 1 byte = 8 bit
4. 一个汉字占2个字节;
1 汉字 = 2 byte = 16 bit
byte:一个字节(8位)(-128~127)(-2的7次方到2的7次方-1)
short:两个字节(16位)(-32768~32767)(-2的15次方到2的15次方-1)
int:四个字节(32位)(一个字长)(-2147483648~2147483647)(-2的31次方到2的31次方-1)
long:八个字节(64位)(-9223372036854774808~9223372036854774807)(-2的63次方到2的63次方-1)
float:四个字节(32位)(3.402823e+38 ~ 1.401298e-45)(e+38是乘以10的38次方,e-45是乘以10的负45次方)
double:八个字节(64位)(1.797693e+308~ 4.9000000e-324
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;
}
分享到:
相关推荐
先对整个数组进行异或得到一个结果,这个结果的任意一个非零位都可以作为区分两个唯一数的标准。然后根据这个位再次遍历数组,分成两组,分别异或即可得到这两个唯一数。 **代码示例:** ```cpp std::pair, int> ...
在这段代码中,首先定义了一个浮点数`floatValue`并将其值设置为8000。接着,使用`BitConverter.GetBytes()`方法将这个浮点数转换成一个字节数组`bytes`。然后通过`BitConverter.ToInt32()`将这个字节数组转换成一个...
- `bit tempreadbit(void)`:读取DS18B20的一个数据位。 - `BYTE tempread(void)`:读取一个字节的数据。 - `void tempwritebyte(BYTE dat)`:向DS18B20写入一个字节的数据。 - `void tempchange(void)`:发送温度...
在这个名为"OFDM-Framework-LabVIEW-master.zip_labview_ofdm_usrp labview"的压缩包中,我们可以推测这是一个基于LabVIEW(Laboratory Virtual Instrument Engineering Workbench,实验室虚拟仪器工程工作台)开发...
在C/C++语言中,结构体是一种复合数据类型,允许我们将多个不同类型的变量组织在一起,形成一个整体。这种特性非常强大,尤其当涉及到硬件接口或者需要精细控制内存布局的时候。本文将重点介绍结构体的一个高级特性...
- 存储器:存储数据的最小单位是位(bit),8位构成一个字节(Byte)。KB是千字节(Kilobyte)的简称,是存储容量的计量单位。 3. 计算机系统组成:完整的计算机系统由计算机硬件系统和软件系统两部分组成,硬件...
- 存储数据的最小单位:计算机存储数据的最小单位是位(bit),而字节(Byte)是最小的数据单位,由8位组成。 - 完整的计算机系统:由计算机硬件系统和软件系统组成,包括处理器、内存、输入输出设备等硬件以及...
2. 获取复选钮标记的值:在 Java Web 开发中,如果需要获取一组复选框(checkbox)的值,应该使用 `request.getParameterValues("city")` 方法,它会返回一个字符串数组,包含所有被选中的值。 3. 主板与 CPU 关系...
信息获取是信息技术的一个基础环节,它涵盖了信息的定义、载体、传播方式、接收方式及其特征。信息的含义可以从多个角度理解,如香农认为信息是用来消除不确定的东西,维纳强调信息不是物质也不是能量,而钟义信则...
在计算机系统中,数据通常以字节(Byte)为单位进行存储和处理,1 Byte等于8个bit。 3. 显示和隐藏命令窗口的操作是在“窗口”菜单中完成的。在大多数程序中,包括一些开发环境或操作系统界面,控制窗口显示和隐藏...
- **定义**:赋值是指将一个值分配给一个变量或对象的过程。 - **应用场景**:如`int a = 5;` 就是将数字5赋值给了变量a。 ### Assignment Operator assignment(指派)运算子/=赋值运算符 - **定义**:"="运算符...
消息摘要算法用于生成一个固定长度的摘要值,通常用于验证数据的完整性和一致性。 ##### 6.1 IMessageDigest接口 IMessageDigest接口定义了消息摘要算法的基本操作,如更新摘要和计算最终摘要值。 ##### 6.2 ...
**按位复制**:将一个值的二进制表示逐位复制到另一个值。 #### Bitwise Operation **按位操作**:在二进制数的每一位上进行的逻辑操作。 #### Block **块**:一组语句或指令,通常用花括号括起来。 #### ...
尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。它很简单并且能够实现远距离通信。 COM 口通信的主要参数包括: * 波特率:衡量通信速度的参数 * 数据位:衡量...
- **知识点**: 在C语言中,定义一个二维数组时可以通过初始化列表来指定某些元素的初始值。例如,对于数组`int a[3][4]={{3,4},{2,8,6}};`,其中`a[2][1]`的值默认为0,因为第二行(索引为1)只初始化了前两个元素。...
八位二进制组成一个字节(Byte),常用于存储一个英文字母或符号。汉字通常使用两个字节(16位二进制)编码,如“新”11010000 11000010和“疆”10111101 10101110。此外,二进制与其他计数制(十进制、八进制、十六...
当在一个单元格中输入公式后,如果相邻的单元格需要进行类似的计算,可以通过自动填充来快速完成。例如,在单元格 A1 输入 `=SUM(B1:C1)` 后,可以通过拖动右下角的小方块(填充柄)来自动将公式应用到 A2、A3 等...