A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王舜民 中级黑马   /  2012-8-24 23:14  /  1560 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 王舜民 于 2012-8-25 17:53 编辑

为什么负数-1为


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

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

评分

参与人数 1技术分 +1 收起 理由
田建 + 1

查看全部评分

4 个回复

倒序浏览
正数的二进制取反在加1就得到对应的负数表示形式。
回复 使用道具 举报
唐见 发表于 2012-8-24 23:43
正数的二进制取反在加1就得到对应的负数表示形式。

这个我也知道
回复 使用道具 举报
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

评分

参与人数 1技术分 +1 收起 理由
张_涛 + 1 赞一个!

查看全部评分

回复 使用道具 举报
再补充一点, 你的-1为什么是64个1  而不是32个1.
是因为你选的 是 四字,也就是8个字节.相当于数据类型是long
1字节又等于8位.
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马