版权声明:此文章为许诗宇所写,如需转载,请写下转载文章的地址 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();