怎么把补码转换成十进制数

编程入门 行业动态 更新时间:2024-10-22 17:24:20

怎么把<a href=https://www.elefans.com/category/jswz/34/1763500.html style=补码转换成十进制数"/>

怎么把补码转换成十进制数

今天无意间看到有人问这个问题,顺便就引申开来为大家讲讲怎么把补码转换成十进制数,诸位看官请看:

class  Test
... {
  public static void main(String[] args)
  ...{
    int i = 0x7FFFFFF1;
    System.out.println(i);
  }
}

j的输出是多少呢?答案是14,下面为大家解答一下为什么。
当你在为变量赋值的时候如果用十六进制,那么其实你指定的是补码,因为我们都知道计算机中表示数是用补码形式表示的,在本题中也就是说变量i在内存中的表示形式是FFFFFFF1,那么j等于对i取反这一句,使得j在内存中的表示形式为0000000E,这时要输出j,其实是问“计算机里0000000E这样的一个数在十进制是多少呢?”,换句话说也就是要把反码是0000000E的这样的一个数换算成十进制,好,跟我来做,首先看最高位,0表示这个数是正数,我们知道正数的补码、原码、反码是一样的,所以就把这个数直接换算成十进制就可以了,也就是E×1=14×1=14,这道题目完成了。
我们再想一想,如果System.out.println(i)输出的是多少呢?类似上面讨论的,这条语句等价于问“内存中FFFFFFF1这样形式的一个数在十进制中是多少呢?”再来跟我做一下,首先看最高位,最高位是1,表示这是个负数,已知负数的补码求十进制和正数是有点不同的,第一步,所有位数取反,所以这一步后FFFFFFF1已经变成0000000E,第二步,转换成十进制,E×1=14×1=14,第三步,取倒数再减1,所以(14)倒=-14,-14-1=-15,结果就是这个数-15,大家看到这里应该明白负数补码怎么换算成十进制了吧,这里再给两个例子大家自己做做看,输出分别是什么呢?
e1.

class  Test
... {
  public static void main(String[] args)
  ...{
    int i = 0x8FFFFFF1;
    System.out.println(i);
  }
}

e2.

class  Test
... {
  public static void main(String[] args)
  ...{
    int i = 0xFFFFFFF1;
    int j = ~i;
    System.out.println(j);
  }
}

 


更多推荐

怎么把补码转换成十进制数

本文发布于:2024-03-09 05:54:24,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1724062.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:补码   转换成   十进制数

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!