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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 我来了 中级黑马   /  2015-8-25 11:19  /  1369 人查看  /  18 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

       给大家一个例子,求大神指点。
       byte b2 = (byte) 130;
       System.out.println(b2);
       类名和主函数就不写了,这个代码涉及到补码,反码,原码的问题,有会的同学,帮忙分析一下,怎么区分,最好能列出这个计算过程。

18 个回复

倒序浏览
蚊子先生 来自手机 中级黑马 2015-8-25 11:51:57
沙发
输出错误吧
回复 使用道具 举报
同学,我也是刚学,说错了勿怪哈!
因为130转换成Byte类型,只剩下1个字节,,而在内存 中都是以 补码的形式存在的,要把值赋给b2输出,所以要将补码转换成反码,进而转换成原码。  数值的正负看最高位,1负零正,正数三码是一样的,负数的反码等于原码的最高位不变,其他位取反。 补码等于反码加1.
回复 使用道具 举报
        原码、反码、补码
                正数                负数
原码:        二进制本身        二进制本身
反码:        同原码                除符号位,原码逐位取反
补码:        同原码                反码+1
回复 使用道具 举报
130的二进制表示是00000000 00000000  00000000  10000010,将其转换为byte时,只会取最低8位,即 10000010
回复 使用道具 举报
由于 10000010的第一位是符号位,所以打印出的结果是-126,java中只有有符号数,是用补码表示的,不要考虑源码和反码
回复 使用道具 举报
我来了 来自手机 中级黑马 2015-8-26 08:06:38
7#
视频中说截取后的10000010这个是原码,要算出补码,为什么,10000010是原码?
回复 使用道具 举报
我写过类似的帖子。。说byte为什么能取到-128
回复 使用道具 举报
是个负数
回复 使用道具 举报
为什么,10000010是原码?
回复 使用道具 举报
刘意的视频里面讲的很清楚
回复 使用道具 举报
我来了 来自手机 中级黑马 2015-8-26 21:23:47
12#
视频里面就提到一句,他说你们拿的是原码,难道我们视频都不一样?求解答啊
回复 使用道具 举报
原码/反码/补码          原码:最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小不够8位                数值位不全 左边补零.          符号位   数值位    7     0       0000111 -7    1       0000111            反码:  正数的反码与其原码相同;负数符号位不变 .,数值位1变0  0变1. 7         0       0000111 -7         1       1111000          补码: 正数的补码与其原码相同; 负数在其反码的基础上补1 7         0       0000111 -7         1       1111001 所有数据的运算都是采用补码进行的。
回复 使用道具 举报
当 int类型 为 8个字节 byte为 4个所以要把删除int 比byte多的4个字节 然后再根据源码和补码的关系进行转化 这需要自己在纸上 进行运算
回复 使用道具 举报
我来了 来自手机 中级黑马 2015-8-28 08:55:30
15#
你说的那个我知道啊,我就想问,为什么截取后的是原码
回复 使用道具 举报
学习下,这个也不太明白
回复 使用道具 举报
zhao1991 发表于 2015-8-25 13:21
由于 10000010的第一位是符号位,所以打印出的结果是-126,java中只有有符号数,是用补码表示的,不要考虑 ...

                         正解!
回复 使用道具 举报
我来了 来自手机 中级黑马 2015-8-29 12:38:45
18#
问了一下老师,老师说截取后的二进制是计算机操作过的,所以是补码,如果截取后的二进制是个正数,那么你可以说他是原码,补码,反码都行,但是要记住,补码是计算机内部操作过的数,原码是我们通过控制台看到的数,所以要把那个补码转换成原码,这样我们就能看到了
回复 使用道具 举报
计算机识别的是补码,所以先转成2进制就是补码了,然后再算反码,再算源码  就是答案了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马