黑马程序员技术交流社区

标题: 解决了问个进制的问题。 [打印本页]

作者: 王舜民    时间: 2012-8-24 23:14
标题: 解决了问个进制的问题。
本帖最后由 王舜民 于 2012-8-25 17:53 编辑

为什么负数-1为


因为 >>和>>>的区别?
>>带正负的右移运算和>>>不带正负符号的右移运算
不知道,这个这么多1怎么算出来的。
我32个1.转换成十进制 答案为4294967295

原理不理解.求大神解答!


作者: 唐见    时间: 2012-8-24 23:43
正数的二进制取反在加1就得到对应的负数表示形式。
作者: 王舜民    时间: 2012-8-24 23:47
唐见 发表于 2012-8-24 23:43
正数的二进制取反在加1就得到对应的负数表示形式。

这个我也知道
作者: 夏天    时间: 2012-8-25 09:23
1转换成 2进制为 ....0000 0000  000 0001
求-1的 2进制则 把上数取反 再+1
取反为 111111111111110
再+1 就全是111了

2进制转换成10进制
比如1,转换成10进制 就是 用 1* 2的0次方
比如110,转换成10进制 就是 用 1*2的2次方+1*2的1次方+0*2的0次方 也就是5.
再比如111,转换成10进制  就是 用 1*2的2次方+1*2的1次方+1*2的0次方 结果就是7,也就是2的3次方-1;
所以32个1 转换成10进制,即 从  2的0次方 +到 2的31次方 结果即为 2的32次方-1
作者: 夏天    时间: 2012-8-25 09:35
再补充一点, 你的-1为什么是64个1  而不是32个1.
是因为你选的 是 四字,也就是8个字节.相当于数据类型是long
1字节又等于8位.




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2