java 二进制与负数互相转化

版权声明:此文章为许诗宇所写,如需转载,请写下转载文章的地址 https://blog.csdn.net/xushiyu1996818/article/details/83269526

负数表示
首先我们要对原码、反码和补码有个了解:
1、所谓原码就是二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。
2、反码表示法规定:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。
原码10010= 反码11101 (10010,1为符号码,故为负)
(11101) 二进制= -13 十进制
3、补码表示法规定:正数的补码与其原码相同;负数的补码是在其反码的末位加1。
举一例,我们来看整数-1在计算机中如何表示。
假设这也是一个int类型,那么:
1、先取1的原码:00000000 00000000 00000000 00000001
2、得反码: 11111111 11111111 11111111 11111110
3、得补码: 11111111 11111111 11111111 11111111

十六进制表示: 0xFFFFFFFF

所以Java中Integer.toBinaryString(-5)结果为11111111111111111111111111111011. Integer是32位(bit)的.

负数转二进制规律:

1、取负数的绝对值的原码;

2、计算原码的反码;

3、对反码加一,获取补码。

3转为二进制
3
0011
1100
1101

二进制负数(开头为1)转为十进制负数
1、 对二进制减一
2、 对此数取反码
3、 得到此数的十进制

1101
1100
0011
3

java 二进制与十进制互相转化

		 int num=3;
    	String s=Integer.toBinaryString(num);	
    	//负数转十进制
    	BigInteger bi = new BigInteger(num);
		bi.toString(2);


    	int a=Integer.valueOf(s,2);
    	//当二进制位负数时
    	BigInteger bi = new BigInteger(s., 2);
    	return bi.intValue();	

猜你喜欢

转载自blog.csdn.net/xushiyu1996818/article/details/83269526