执行下面程序后,结果是   public class Testrr {     public static void main(String args[]){      int i=0xFFFFFFF1;      int j=-i;      Syste

admin2009-01-15  16

问题 执行下面程序后,结果是   public class Testrr {     public static void main(String args[]){      int i=0xFFFFFFF1;      int j=-i;      System.out.println("j="+j);    }   }

选项 A、j=-15
B、j=-16
C、j=16
D、j=15

答案8

解析 ①负数在计算机中的表示形式是采用补码形式的。所谓补码:一般用十六位二进制来表示一个补码,二进制的第一位是符号位,剩下的十五位是数值位。如果数是正数,符号位取0,然后用本身的二进制作为这个数的数值位;如果是负数,符号位取 1,然后把本身的二进制码每位取反,然后在末尾加一,便得这个数的数值位。②题目中给的int i=0xFFFFFFF1;用一个十六进制的数来表示二进制数,其二进制是1111 1111 1111 0001,这样看是一个负数的补码,还原十进制,得0000 0000 0000 1111,是-15。③题目中要求输出i得负数得int型,这样肯定是15。
转载请注明原文地址:https://jikaoti.com/ti/JIb0FFFM
0

最新回复(0)