已采纳回答 / 五竹
首先,java中的二进制采用的是补码形式,并非原码或反码,这3个概念要搞清楚;其次,byte占8位,int占32位,将byte强制转换为int型时,如果没有做 & 0xff运算,且byte对应的值为负数的话,就会对高位3个字节进行补位,这样就有可能出现补位误差的错误。举例来说,byte型的-1,其二进制(补码)为11111111(即0xff),转换成int型,值也应该为-1,但经过补位后,得到的二进制为11111111111111111111111111111111(即0xffffffff),这就...
2015-06-28
讲师回答 / tuohuangs
谢谢拍砖1、这个地方可能也需要修改回答:“分析:只需要该补码的源码对应的正值,然后去相反数”,这句话,已经说明了“正值”用红色标出。,所以下面就是求“正值”。所以没必要修改2、还有一个问题回答:负数左移两位,是先左移得到二进制(即补码表示形式),(需要求出补码的原码)再求正值,最后取反。
2014-10-20
讲师回答 / tuohuangs
static int parseInt(String s) 将字符串参数作为有符号的十进制整数进行分析。static Integer valueOf(int i) 返回一个表示指定的 int 值的 Integer 实例。其它进制表示的是不能作为参数的不知你是否满意
2014-10-06
讲师回答 / tuohuangs
这个问题提的很好,欢迎大家拍砖需要说明的的是:上面讲的:(1)反码是二进制数的反码,不是整数的反码;(2)数在计算机中的表示形式可以是补码、原码、反码,但是负数采用了其正数的补码形式表示。详细如下:一、原码 反码 补码都是指的数的一种二进制表示形式,因此整数的表示方式有三种:原码 反码 补码例如:5的原码00000000 00000000 00000000 0000010111111111 11111111 11111111 11111010是(原码)00000000 00000000 00000000 ...
2014-10-06
讲师回答 / tuohuangs
Java是高层语言,简单的程序开发中,进制用的不多,但是在文件流和网络数据传输 及跨平台开发中会涉及到进制,特别是二进制。如服务端是C开发的,客户端你需要用JAVA获取数据、提交数据,就用到了把对象转为字节数据
2014-09-16