`
cuisuqiang
  • 浏览: 3963069 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
3feb66c0-2fb6-35ff-968a-5f5ec10ada43
Java研发技术指南
浏览量:3672403
社区版块
存档分类
最新评论

获取一个 Byte 的各个 Bit 值

阅读更多

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

 

自建博客地址:http://www.javacui.com/ ,内容与ITEYE同步!

分享到:
评论
3 楼 小_歪 2012-12-19  
public static void main() {
    System.out.println(1123);
}
2 楼 小_歪 2012-12-19  
123
1
1 楼 cuisuqiang 2012-10-18  
结果
11010011
-45

相关推荐

    A Collection of Bit Programming Interview Questions solved in C++.pdf

    先对整个数组进行异或得到一个结果,这个结果的任意一个非零位都可以作为区分两个唯一数的标准。然后根据这个位再次遍历数组,分成两组,分别异或即可得到这两个唯一数。 **代码示例:** ```cpp std::pair, int> ...

    OFDM-Framework-LabVIEW-master.zip_labview_ofdm_usrp labview

    在这个名为"OFDM-Framework-LabVIEW-master.zip_labview_ofdm_usrp labview"的压缩包中,我们可以推测这是一个基于LabVIEW(Laboratory Virtual Instrument Engineering Workbench,实验室虚拟仪器工程工作台)开发...

    C8051驱动传感器

    - `bit tempreadbit(void)`:读取DS18B20的一个数据位。 - `BYTE tempread(void)`:读取一个字节的数据。 - `void tempwritebyte(BYTE dat)`:向DS18B20写入一个字节的数据。 - `void tempchange(void)`:发送温度...

    csapp 深入理解计算机系统 参考答案

    具体地,首先分别获取两个整数的最低字节,然后使用掩码操作清除一个整数的最低字节,并将另一个整数的最低字节填充到该位置。 ```c int swap_least_significant_byte(int x, int y) { // 获取x和y的最低字节 int...

    C_C++结构体的一个高级特性―指定成员的位数

    在C/C++语言中,结构体是一种复合数据类型,允许我们将多个不同类型的变量组织在一起,形成一个整体。这种特性非常强大,尤其当涉及到硬件接口或者需要精细控制内存布局的时候。本文将重点介绍结构体的一个高级特性...

    2021-2022计算机二级等级考试试题及答案No.1543.docx

    2. 获取复选钮标记的值:在 Java Web 开发中,如果需要获取一组复选框(checkbox)的值,应该使用 `request.getParameterValues("city")` 方法,它会返回一个字符串数组,包含所有被选中的值。 3. 主板与 CPU 关系...

    2021-2022计算机二级等级考试试题及答案No.16642.docx

    在计算机系统中,数据通常以字节(Byte)为单位进行存储和处理,1 Byte等于8个bit。 3. 显示和隐藏命令窗口的操作是在“窗口”菜单中完成的。在大多数程序中,包括一些开发环境或操作系统界面,控制窗口显示和隐藏...

    C# IEEE754浮点数转换示例代码

    在这段代码中,首先定义了一个浮点数`floatValue`并将其值设置为8000。接着,使用`BitConverter.GetBytes()`方法将这个浮点数转换成一个字节数组`bytes`。然后通过`BitConverter.ToInt32()`将这个字节数组转换成一个...

    gnu加解密算法实现

    消息摘要算法用于生成一个固定长度的摘要值,通常用于验证数据的完整性和一致性。 ##### 6.1 IMessageDigest接口 IMessageDigest接口定义了消息摘要算法的基本操作,如更新摘要和计算最终摘要值。 ##### 6.2 ...

    c++技术术语.doc

    - **定义**:赋值是指将一个值分配给一个变量或对象的过程。 - **应用场景**:如`int a = 5;` 就是将数字5赋值给了变量a。 ### Assignment Operator assignment(指派)运算子/=赋值运算符 - **定义**:"="运算符...

    2020高中信息技术会考选择题知识点.docx

    信息获取是信息技术的一个基础环节,它涵盖了信息的定义、载体、传播方式、接收方式及其特征。信息的含义可以从多个角度理解,如香农认为信息是用来消除不确定的东西,维纳强调信息不是物质也不是能量,而钟义信则...

    计算机1级考试模拟题.pdf

    - 存储器:存储数据的最小单位是位(bit),8位构成一个字节(Byte)。KB是千字节(Kilobyte)的简称,是存储容量的计量单位。 3. 计算机系统组成:完整的计算机系统由计算机硬件系统和软件系统两部分组成,硬件...

    计算机一级考试模拟题.doc

    - 存储数据的最小单位:计算机存储数据的最小单位是位(bit),而字节(Byte)是最小的数据单位,由8位组成。 - 完整的计算机系统:由计算机硬件系统和软件系统组成,包括处理器、内存、输入输出设备等硬件以及...

    TS格式详解

    TS格式详解 TS流格式是数字视频广播系统中的一种基本格式,它将多个音频、...PAT表中的每一项都包含了一个PID和一个节目编号,用于关联TS流中的节目信息。PAT表是TS流中的基本组成部分,它提供了TS流中的基本信息。

    2020高中信息技术会考选择题知识点.pdf

    1bit是信息的最小单位,1Byte是信息的常用存储单位,其中1Byte等于8bit。信息的存储容量单位还包括KB、MB、GB、TB等,它们之间存在1024倍的关系。 【信息技术发展历程】 信息技术的发展历程可以分为多个阶段,从...

    2021-2022计算机二级等级考试试题及答案No.409.docx

    - **知识点**: 在C语言中,定义一个二维数组时可以通过初始化列表来指定某些元素的初始值。例如,对于数组`int a[3][4]={{3,4},{2,8,6}};`,其中`a[2][1]`的值默认为0,因为第二行(索引为1)只初始化了前两个元素。...

    高三复习信息技术知识点总结.pdf

    基本单位是位(bit),8位组成一个字节(Byte)。数据单位有bit、B、KB、MB、GB、TB等。 3. 字符编码:ASCII码是美国信息交换标准码,用7位二进制表示128个字符。汉字编码有GB-2312、GBK、GB18030等,传统上每个...

    软件开发技术常用术语英中对照

    **按位复制**:将一个值的二进制表示逐位复制到另一个值。 #### Bitwise Operation **按位操作**:在二进制数的每一位上进行的逻辑操作。 #### Block **块**:一组语句或指令,通常用花括号括起来。 #### ...

Global site tag (gtag.js) - Google Analytics