‘壹’ java里用Integer.parseInt()把负数的二进制转化十进制会抛异常怎么办,有什么办法能转化
Integer.parseInt(String s, int radix) 这个方法本身就不能转负数,只能转正数。如果你想转换-1,那只能是 Integer.parseInt("-1",2),同理,转-123,只能 Integer.parseInt("-1111011",2),即在本身正数对应2进制之前加一个“-”号。
对于“已知一个负整数的二进制数,求这个数的十进制数”这类问题的话,那么方法如下:
对字符串操作,取反码,然后再按照上文所述方式转换,就可以得到所求负数+1,再-1,就可以得到所求负数
记得给分呦,亲~~~~
‘贰’ java中二进制怎么表示
二进制是计算技术中广泛采用的一种数制。二进制数据是用0和1两个数码来表示的数。它的基数为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:
可以看到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的二进制表示:(这个二进制的后八位就是line1,可以直接打印的话Java把其当做了负数
-2)
Java中255的二进制表示:(24个‘0’,8个‘1’)
做与后变为:
这样做与后表示的数就是正数了
254。可以想一下,假设每一行用2个字节表示一个无符号数,那么可以把每一行变成正整数用方法2怎么做?
2.Java中的>>和>>>
'>>'
算术右移,向右移左边补符号位
'>>>'
逻辑右移,向右移左边补0
System.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:
-7>>2:
-7>>>2: //正常应该这样(00)左边的两个0不显示
‘叁’ Java怎么用二进制表示负数
将负数转化成正数的方法:1、对已知是负数的数值转化方法:假设a为已知负数,则intb=-a;则b为所需正数;2、对不确定正负性的数值转化方法:假设有a,正负不确定,则可用:intb=Math.abs(a);取绝对值的方式来将数值转化成正数。
‘肆’ 二进制负数在java中该如何表示
0b开头标识二进制,如 -0b1101
‘伍’ java里负数的二进制表示·····
对,你做的很正确。11111011就是-5的补码。
‘陆’ java中二进制-11的源码和反码是多少
正数的反码是其本身
负数的反码是在其原码的基础上, 符号位不变,其余各个位取反
以8位为例
11 原码为 0000 1011
-11 原码为 1000 1011
-11 反码为 1111 0100