首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

Java的补码示意

2012-09-21 
Java的补码表示最近发现一个比较低级的问题,就是java中的数值表示。Java是使用补码表示数值的,但一直忽略了

Java的补码表示
        最近发现一个比较低级的问题,就是java中的数值表示。Java是使用补码表示数值的,但一直忽略了哪个是源码,哪个是补码。看这个简单的例子:

public class JavaTest {public static void main(String[] args) throws Exception {        System.out.println((byte)129);}}

        129显然超出了byte所表示的范围-128~127。127的二进制表示是01111111,则129应该表示为10000001,但是int和byte是有符号的。所以这个结果是-1,但这却是一个错误的结果,程序运行的真正结果是-127。
        之所以会有这样的结果是因为Java使用补码表示的,127是整数,所以补码和原码是一样的,我们在对127进行+2操作时也是对补码进行,所以我们看到的100000001这个是补码,转换成原码是11111111,也就是-127。符合程序结果。

热点排行