黑马程序员技术交流社区

标题: 补码表示---请问一下位运算中的操作数在运算时原码,反... [打印本页]

作者: iloveyou    时间: 2014-4-16 18:19
标题: 补码表示---请问一下位运算中的操作数在运算时原码,反...
本帖最后由 iloveyou 于 2014-4-17 01:58 编辑

计算机中整数是由二进制表示的,这个二进制是原码 ,反码,还是补码?
譬如 5&9  System.out.println(5 & 9);---------------输出结果为1
        5|9   System.out.pritnln(5 |9);------------------输出结果为13

1.可否用图例给讲解一下-5在内存中的表示是入下的哪个?
          -5的原码:1000 0000 0000 0000 0000 0000 0000 0101
          -5的反码:1111 1111 1111 1111 1111 1111 1111 1010
          -5的补码:1111 1111 1111 1111 1111 1111 1111 1011
  
2.操作数在内存中是怎么表示的。采用哪种码,正数采用哪一种,负数采用哪一种?


作者: alucard    时间: 2014-4-16 21:58
本帖最后由 alucard 于 2014-4-16 22:00 编辑

我画了一个图,你看看是不是明白,代码如下:
  1. class BinTest
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 System.out.println(5&9);
  6.                 System.out.println(5|9);
  7.                 System.out.println(~(-5));
  8.                 System.out.println(~5);
  9.         }
  10. }
复制代码







作者: iloveyou    时间: 2014-4-16 22:33
总结的真好,谢谢
作者: Union    时间: 2014-4-26 23:56
alucard 发表于 2014-4-16 21:58
我画了一个图,你看看是不是明白,代码如下:

解答的不错哦!
作者: 尚巾仁杰    时间: 2015-3-19 22:36
收藏一下,学习学习,对这个问题一直比较模糊




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2