java中二进制怎么说_java中二进制怎么表示

本文详细介绍了Java中二进制数的表示方法及其转换过程,包括正数和负数的二进制形式,以及如何将二进制表示转换为整数。特别地,文章解释了Java中对二进制数的补码存储方式,并提供了具体实例进行说明。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

展开全部

二进制是计算技术中广泛采用的一种数制。二进制数据是用0和1两个数码来表示的数。它的基数e68a8462616964757a686964616f31333363376537为2,进位规则是“逢二进一”,借位规则是“借一当二”,由18世纪德国数理哲学大师莱布尼兹发现。当前的计算机系统使用的基本上是二进制系统,数据在计算机中主要是以补码的形式存储的。计算机中的二进制则是一个非常微小的开关,用“开”来表示1,“关”来表示0。

1、Java中定义两个数,然后分别打印出它们的二进制表示:System.out.println("Java二进制7: "+Integer.toBinaryString(7));

System.out.println("Java二进制-7: "+Integer.toBinaryString(-7));

输出:

Java二进制7: 111

Java二进制-7: 11111111111111111111111111111001

可以看到Java中对于数的表示属于有符号的,那么这个是怎么来的?

7好办,直接是111

-7转化二进制的过程:

(1)把-7转化成7,二进制是 111

(2)Java中对于不满32位的int二进制自动补齐,所以变成了 (29个0)111

(3)然后取反  (29个1)000

(4)然后加1 (29个1)001

这就是-7的整个转化过程,那么现在有一个问题,如果有一个文本文件,每一行有八位二进制,表示的范围是(0~255),也就是用一个字节表示的无符号整数,如果现在要把这些二进制转化成整数存到文件里应该怎么做?

文件:

line1    11111110     (254)

line2    00000000     (0)

假设用Java读进了第一行,那么直接打印出来的值是-2,不符合要求,这时让-2变254有两种办法:

(1)用Java自带的方法,Byte.toUnsignedInt((byte) -2)(ps.-2的二进制表示就是line1),这样打印出来的就是254了System.out.println(Byte.toUnsignedInt((byte) -2));

输出:254

第二种方法的原理:

Java中-2的二进制表示:11111111111111111111111111111110(这个二进制的后八位就是line1,可以直接打印的话Java把其当做了负数 -2)

Java中255的二进制表示:00000000000000000000000011111111(24个‘0’,8个‘1’)

做与后变为:00000000000000000000000011111110

这样做与后表示的数就是正数了 254。可以想一下,假设每一行用2个字节表示一个无符号数,那么可以把每一行变成正整数用方法2怎么做?

2.Java中的>>和>>>

'>>' 算术右移,向右移左边补符号位

'>>>' 逻辑右移,向右移左边补0System.out.println("Java二进制-7: "+Integer.toBinaryString(-7));

System.out.println("-7>>2: "+Integer.toBinaryString(-7>>2));

System.out.println("-7>>>2: "+Integer.toBinaryString(-7>>>2));输出:

Java二进制-7: 11111111111111111111111111111001

-7>>2: 11111111111111111111111111111110

-7>>>2: 111111111111111111111111111110 //正常应该这样(00)111111111111111111111111111110左边的两个0不显示

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值