当前位置:首页 » 编程语言 » javabyte二进制

javabyte二进制

发布时间: 2022-08-10 12:44:31

Ⅰ 在java中怎么把字节数组转换成二进制字符串

可以使用Integer类的toBinaryString方法,例如:

bytea=0x45;
StringbinStr=Integer.toBinaryString(a).

API中toBinaryString的解释:

toBinaryString

public static String toBinaryString(inti)

以二进制(基数 2)无符号整数形式返回一个整数参数的字符串表示形式。

如果参数为负,该无符号整数值为参数加上 232;否则等于该参数。将该值转换为二进制(基数 2)形式的无前导0的 ASCII 数字字符串。如果无符号数的大小为零,则用一个零字符'0'(’u0030’) 表示它;否则,无符号数大小的表示形式中的第一个字符将不是零字符。字符'0'('u0030') 和'1'('u0031') 被用作二进制数字。


参数:

i- 要转换为字符串的整数。

返回:

用二进制(基数 2)参数表示的无符号整数值的字符串表示形式。

从以下版本开始:

JDK1.0.2

Ⅱ java怎么把一个byte变量按二进制输出

/**
* 将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);
}

使用:
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));

Ⅲ java中byte占几个字节

byte 1个字节 8位;short、char 2个字节 16位;int float 4个字节 32位;double、long 8个字节 64位;别说些错答案,字节和位是有区别的好嘛?!

Ⅳ 关于java的byte取值范围,一定给分

关于byte字节范围理解
首先规定二进制的头位为符号位,0为正,1为负
符号位用红色标记一下
则下面的数01111111和00000000代表:

0 1 1 1 1 1 1 1 = + 127 =2^0+2^1+2^2+2^3+2^4+2^5+2^6= 2^7-1(公式就不推啦)

0 0 0 0 0 0 0 0 = + 0

正数已经规定好了而且二进制计算也对应相应的数计算(如1+1=2对应 00000001+00000001=00000002)

这下就差规定负数了
还剩下 1 0000000到1 1111111的代表没有规定
1 1 1 1 1 1 1 1 =?
1 0 0 0 0 0 0 0 =?

这里就发现二进制0 0000000代表0了,那1 0000000代表什么?代表 -0 ?这样不是浪费资源而且不合理?

肯定有人想那 1 0000000规定-1 ,1 1111111规定-128不就好了嘛。
但是这就不符合对应的数计算啦 (如0-1代表0 0000000-0 0000001=?等于-1吗?明显感觉哪里不合理啊)

可以看到正数计算都是符合对应的数计算,那么0 1111111代表的127在加一会怎么样?
可以看到0 1111111+0 0000001=1 0000000
那么1 0000000代表着什么数呢?
程序员就规定这个数代表着-128,那么怎么来的呢。

先从0 0000000为突破口。意外发现
1 1111111(8位)+0 0000001(8位)=1 0 0000000(9位)而最头位不存储的话只剩下0 0000000,而这个数不是代表着0吗。那么只有-1+1等于0了。所以规定了1 1111111代表着-1.

-1-1=-2(1 1111110)
-2-1=-3(1 1111101)
-3-1=-4(1 1111100)
·························。。。。。。。。。。。
-127-1=-128(1 0000000)
所以就规定了1 0000000为-128
结论就是:
0 1 1 1 1 1 1 1 +127
0 0 0 0 0 0 0 0 +0

1 1 1 1 1 1 1 1 -1
1 0 0 0 0 0 0 0 -128
这样计算就符合了对应代表数的计算,但是负数的二进制就没法从原来的公式推出来了
于是有了补码

补码原则:符号位不变,先减一,其它位再相反可以了;
补码如:
1 1 1 1 1 1 1 1 符号位不变

1 1 1 1 1 1 1 0 减一

1 0 0 0 0 0 0 1 再相反位

这个就可以用原来的公式推出代表着-1啦,以上就是本人自己的理解啦,主要为了简明易懂。其次符号位算入其中不严谨,可能有错还望指出。

Ⅳ JAVA中byte类型的介绍。 谢谢

1、在Java中,byte类型的数据是8位带符号的二进制数。最高位表示正负,0为正,1为负。

2、java byte是做为最小的数字来处理的,因此它的值域被定义为-128~127,也就是signed byte。

3、正数的最高位都是 0 ,正数的值就是二进制表示的值。

4、负数的最高位都是 1 ,负数的值是 取反后加一 然后加个负号得到的值。

(5)javabyte二进制扩展阅读

1、java基本数据类型

JAVA中一共有八种基本数据类型,分别是byte、short、int、long、float、double、char、boolean。

2、java各数据类型取值范围

byte,整型,1个字节,范围:-2的7次方 ~ 2的7次方-1;

short,整型,2个字节,范围:-2的15次方 ~ 2的15次方-1;

int,整型,4个字节,范围:-2的31次方 ~ 2的31次方-1;

long,整型,8个字节,范围:-2的63次方 ~ 2的63次方-1;

float,浮点型,4个字节,范围:3.402823e+38 ~ 1.401298e-45;

double,浮点型,8个字节,范围:1.797693e+308~ 4.9000000e-324;

char,文本型,2个字节,范围:0~2的16次方-1;

boolean,布尔型,1个字节,范围:true/false;

参考资料

网络-java字符型

Ⅵ java byte数组写入本地文件,那这个文件是二进制文件吗不是的话,是什么文件跪求解答啊

byte是十进制的数字。。
给你看个例子:
public class Test {

public static void main(String[] args) {
String str = "b";
byte[] bytes = str.getBytes();
for(byte b:bytes){
System.out.println(b);
System.out.println(Integer.toBinaryString(b));
}

}
}

Ⅶ Java byte 二进制

byte a = 1111; // 这样定义,这个 1111 到底是二进制,还是10进制,还是 X 进制,系统是不知道的。。
在这里,1111 默认被当作 10 进制。。
Java 不支持显式输入二进制,默认为 10 进制,0 开头为8进制,比如 01111,0x开头为16 进制,比如 0x11。。
byte 数据类型所表示的范围为 -128~127,已经超出范围了。。

Ⅷ java如何将BYTE型数转化为八位二进制,及如何将八位二进制数转化为Byte型的。

使用八进制表示整数,只要在十进制数前加一个0就可以了,比如12的八进制就i=012,这样在输出时System.out.println("i=" +i)就是i=10

Ⅸ Java里byte类型最大和最小值的二进制表示

Java用的是补码,补码的规则就是这样,每位都是 1 就表示负一,最高位是 1 其余位是 0 表示的是最小值

Ⅹ JAVA 位运算 (byte) (a << 2); 是什么意思

您好,你的问题,我之前好像也遇到过,以下是我原来的解决思路和方法,希望能帮助到你,若有错误,还望见谅!展开全部
你看下这篇文章就清楚了

首先要明白一点,这里面所有的操作都是针对存储在计算机中中二进制的操作,那么就要知道,正数在计算机中是用二进制表示的,负数在计算机中使用补码表示的。

左移位:<<,有符号的移位操作
左移操作时将运算数的二进制码整体左移指定位数,左移之后的空位用0补充

右移位:>>,有符号的移位操作
右移操作是将运算数的二进制码整体右移指定位数,右移之后的空位用符号位补充,如果是正数用0补充,负数用1补充。

例子:

public static void main(String[] args)
{

System.out.println(3<<2);//3左移2位
System.out.println(-3<<2);//-3左移2位

System.out.println(6>>2);//6右移2位
System.out.println(-6>>2);//-6右移2位

}

输出结果

12
-12
1
-2
下面解释一下:

00000000 00000000 00000000 00000011 +3在计算机中表示
00000000 00000000 00000000 0000001100 左移2位,补0,结果为12

----------------------------------------------------------------------------------------------

00000000 00000000 00000000 00000011 +3在计算机中表示
11111111 11111111 11111111 11111100
11111111 11111111 11111111 11111101 -3在计算机中表示
11111111 11111111 11111111 1111110100 左移2位,补0,结果为负数,就是补码了,求原码
10000000 00000000 00000000 00001011
10000000 00000000 00000000 00001100 结果-12
----------------------------------------------------------------------------------------------

这也说明了一个问题:在计算机中,以1开头的就是补码的形式,是负数。

00000000 00000000 00000000 00000110 +6在计算机中表示方法
0000000000 00000000 00000000 00000110 右移两位,正数补0,结果为1
----------------------------------------------------------------------------------------------

00000000 00000000 00000000 00000110 +6在计算机中表示方法
11111111 11111111 11111111 11111001
11111111 11111111 11111111 11111010 -6在计算机中的表示
1111111111 11111111 11111111 11111010 右移两位,结果为负数
1000000000 00000000 00000000 000001
1000000000 00000000 00000000 000010 结果为-2
这个地方很容易弄混,多想几次就会慢慢理解了。

上面解释了带符号的移位操作,下面解释一下不带符号的移位操作

无符号的移位只有右移,没有左移使用“>>>”进行移位,都补充0

例如:
public static void main(String[] args)
{
System.out.println(6>>>2);
System.out.println(-6>>>2);

}
结果:

1
1073741822

分析:

00000000 00000000 00000000 00000110 +6在计算机中表示方法
0000000000 00000000 00000000 00000110 右移两位,正数补0,结果为1
-----------------------------------------------------------------------------------------------------

00000000 00000000 00000000 00000110 +6在计算机中表示方法
11111111 11111111 11111111 11111001
11111111 11111111 11111111 11111010 -6在计算机中的表示
0011111111 11111111 11111111 11111010 右移两位,补充0,结果为1073741822

以下来自:

可以参考

移位操作要注意的问题是高(低)位是补0还是补1和对char, byte, short型的操作:
(1)<< : (left-shift), 最低位补0
(2)>> : (signed right-shift), 右移过程使用符号位扩展(sign extension),即如果符号为为1则高位补1, 是0则补0,也就是逻辑右移
(3)>>> : (unsigned right-shit),右移过程使用零扩展(zero extension),即最高位一律补0,也就是算术右移
(4)移位操作的数据类型可以是byte, char, short, int, long型,但是对byte, char, short进行操作时会先把它们变成一个int型,最后得到一个int型的结果,对long型操作时得到一个long型结果,不可以对boolean型进行操作。
(5)移位操作符可以和=合并起来,即 <<= 、 >>= 和 >>>=。例如 a >>= 2; 表示将a右移两位后的值重新赋给a。当时在使用这三个操作符对 byte, char, short型数据进行操作时要注意,例如有一下代码片段:非常感谢您的耐心观看,如有帮助请采纳,祝生活愉快!谢谢!

热点内容
车库配置灭火器有什么要求 发布:2024-05-04 02:41:46 浏览:16
软考算法 发布:2024-05-04 02:36:49 浏览:73
c语言求质因子 发布:2024-05-04 02:10:56 浏览:756
sqlserver无法启动 发布:2024-05-04 01:37:19 浏览:850
php使用正则 发布:2024-05-04 01:36:12 浏览:120
玉石密度算法 发布:2024-05-04 01:24:49 浏览:336
我的世界云服务器怎么样 发布:2024-05-04 01:20:01 浏览:23
androidsdk包含 发布:2024-05-04 00:45:54 浏览:209
android拷贝文件 发布:2024-05-04 00:38:28 浏览:777
存储冗余比 发布:2024-05-04 00:12:58 浏览:405