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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

超过界限了,
回复 使用道具 举报
2楼的哥们说的是对的
回复 使用道具 举报
shenkeyangguang 发表于 2015-5-11 23:00
数据130默认是int类型的十进制数据
第一步十进制的130转换成二进制数据
1 0 0 0 0 0 1 0

哥们不好意思啊,这个是我写错了,前几天忙没来得及改,下面的是正确算法

数据130默认是int类型的十进制数据
第一步十进制的130转换成二进制数据
1 0 0 0 0 0 1 0
因为计算机的所有数据都是以补码形式运行的所以130的二进制也要变成补码,因为它是正数所以它的补码是它本身
第二步补码130是int类型是占4个字节的,所以在内存的表现形式是
00000000  00000000  00000000  10000010
做了截取后的结果为
10000010
这就得到了补码,所以要变回我们日常看到的原码
补码:1 0000010    补码变反码,就是补码加-1
反码:1 0000001    反码变原码,符号位不变,数值为1变0,0变1;
原码;1 1111110
最终的看到的结果就是
1     1111110最高为是符号位不运算,数值为转化为十进制是64+32+16+8+4+2=126符号位负
所以为-126
回复 使用道具 举报 2 0
受教了!!!!!!!!
回复 使用道具 举报
楼主,,,,,
回复 使用道具 举报
int 4个字节 byte一个字节, 强转的过程中丢失了前面三个字节
回复 使用道具 举报
终于掌握这个知识了
回复 使用道具 举报
130超出范围了
回复 使用道具 举报
byte整数型范围是-128到127 当130强转成byte类型 发生溢出,例如128溢出,相当于最小的负数 结果(byte)128=-128,(byte)129=-127,(byte)130=-126  .......以此类推
回复 使用道具 举报
数据的原码,反码和补码都弄清楚了就知道了
回复 使用道具 举报
gaoer 中级黑马 2015-5-20 22:54:13
31#
我也想问 ·!!!!!!!!!!!!
回复 使用道具 举报
byte的范围是-128~127
回复 使用道具 举报
byte 类型的有效位是-128~127,超出范围就会舍弃,这样用2进制把前面去掉,第一个是符号位,所以,就是-126
回复 使用道具 举报
1楼  已经告诉你结果了  你知道byte 的范围么?
回复 使用道具 举报
我干阿衰 发表于 2015-5-12 01:39
130的二进制是10000010其为补码,由最高位是1,所以他是负数,
补码求反码减1得反码为10000001,再将反码按位 ...

刘意讲的为什么是10000010是原码
回复 使用道具 举报
都说得好详细啊~~~~~~~
回复 使用道具 举报
JY. 中级黑马 2015-10-11 08:24:14
37#
不错不错
回复 使用道具 举报
老师昨天刚讲完
回复 使用道具 举报
学习了。。。
回复 使用道具 举报
老师刚讲~~~~~~~~~~~~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马