-32768的二进制是多少

-32768的二进制是多少

网上说从任意负十进制整数转换为二进制值的方式是取得这个数的绝对值的原码,再取反,最后加1就是这个负十进制整数的二进制值。按照这个说法先来看看-9转换为二进制值的过程

1.取得-9的绝对值的二进制值:
9/2=4 m 1
4/2=2 m 0
2/2=1 m 0
1/2=0 m 1
得出9的原码为1001,因为我最终目的是要知道java short类型minvalue的二进制值,所以我假设是用一个short类型的变量来存储9这个十进制值,那么它的原码就是
0000 0000 0000 1001
2.将9的原码取反就是1111 1111 1111 0110
3.最后将9的反码加1得到它的补码为 1111 1111 1111 0111
4.将9的补码转换为16进制结果为 FFF7
然后 System.out.print((short)0xFFF7),控制台打印出-9,说明以上推算过程是正确的。

按照上面那种推算方式来计算java short类型的最小值(Short.MIN_VALUE)

1.得到|-32768|的原码是1000 0000 0000 0000
2.得到反码 0111 1111 1111 1111
有没有注意到?问题出来了!,反码加1,加你妹啊,最后一位加1就是2了,明显不是二进制嘛!我在网上查了一些资料,不是晦涩难懂就是拿-5来做例子,偏偏-5的反码最后一位是0,我就郁闷了。麻烦各位路过的师兄帮忙解释下。还有就是System.out.print(Integer.toBinaryString(-32768))的结果是
1111 1111 1111 1111 1000 0000 0000 0000,我实在是看不懂,short类型不是最多允许长度为15的二进制数吗?这都32位了,求解释啊!我的qq是963791869,有兴趣的师兄弟可以一块学习! 论文网 

java int是32位的

Plain Text code?123  32768 = 0000 0000 0000 0000 1000 0000 0000 0000 ~32768 = 1111 1111 1111 1111 0111 1111 1111 1111     +1 = 1111 1111 1111 1111 1000 0000 0000 0000
然后如果9999999+1你都认为它还是合法的十进制值的话我就无语了

Copyright © 2007-2012 www.chuibin.com 六维论文网 版权所有