黑马程序员技术交流社区

标题: 这个段代码中的负号是怎么确定的? [打印本页]

作者: ImKing    时间: 2016-7-5 21:49
标题: 这个段代码中的负号是怎么确定的?
  1. class Demo1_Operator {
  2.         public static void main(String[] args) {
  3.                 /*
  4.                 * &,|,^,~ 的用法
  5.                 * &:有0则0
  6.                 * |:有1则1
  7.                 * ^:相同则0,不同则1
  8.                 * ~:按位取反
  9.                 */

  10.                 System.out.println(6 & 3);                                //2
  11.                 System.out.println(6 | 3);                                //7
  12.                 System.out.println(6 ^ 3);                                //5       
  13.                 System.out.println(~6);                                        //-7?                                       
  14.         }
  15. }
  16. /*
  17.         110
  18. &        011
  19. -----------
  20.     010

  21.         110
  22. |        011
  23. -----------
  24.     111

  25.         110
  26. ^        011
  27. -----------
  28.     101

  29.         00000000 00000000 00000000 00000110                6的原码反码补码都是本身
  30.         11111111 11111111 11111111 11111001                对6取反
  31. -        00000000 00000000 00000000 00000001
  32. ---------------------------------------
  33.         11111111 11111111 11111111 11111000                反码
  34.         10000000 00000000 00000000 00000111                原码(-7)
  35. */
复制代码


问题:
其中System.out.println(~6); 语句输出的结果是 -7,但是分析的时候,最高位符号位为 1,整数情况下最高位都是按符号位来计算的吗?
哎呀,感觉这个问题问的好别扭啊,,,
作者: yaozhilin    时间: 2016-7-5 22:13
最高位就是符号位
作者: ImKing    时间: 2016-7-5 22:46
yaozhilin 发表于 2016-7-5 22:13
最高位就是符号位

哦哦,谢谢,{:3_57:}




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