Java笔试题14:下面java代码执行结果是?

What results from the following code fragment()?

int i = 5;
int j = 10;
System.out.println(i + ~j);
A、Compilation error because”~”doesn’t operate on integers
B、-5
C、-6
D、15

题目解析:

计算方式一、

计算机中以补码存储。

正数的原码/反码/补码相同,所以

10存储为00000000 00000000 00000000 00001010

~10的原码为11111111 11111111 11111111 11110101(10取反)

~10的反码为10000000 00000000 00000000 00001010(最高位符号位,不变,其余位取反)

~10的补码为10000000 00000000 00000000 00001011(负数的补码=反码+1)

所以~10 = -11

计算方式二、

负数的补码 = 原码取反 + 1,即:

-n = ~n + 1 → ~n = -n -1

~j:~10 = - 10 - 1 = -11

i + j = 5 + -11 = -6


分享到:


相關文章: