目录
1.if运行题
现有
public static void main(String[] args) {
boolean x=false;
boolean y=true;
short z=42;
if (z++==42&&y){
z++;
}
if (!x||++z==45){
++z;
}
System.out.println("z="+z);
}
运行结果为_____
A.42
B.44
C.45
D.46
个人解析思路:
输入布尔值x为错误,y为正确,short类型z为42
第一个if中z先进行比较再进行运算,当前z为42,等等于42,正确,这时z再进行++运算,为43
&&逻辑与左边正确时右边继续运行,当两边都为正确时才成立,如果左边为false,则右边不再进行计算运行
右边y也为正确,则进入代码块,z++,43+1=44,运行到这里z为44
进入第二个if运算,!x为true
||逻辑或左边正确时右边不再进行计算运行,直接进入if的代码块,如果左边错误,才会继续进行右边的计算
右边++z不进行计算,此时z还是44,进入代码块,++z为44+1=45,结束运行,在输出语句中输出z=45,所以此题选C
2.比特位值
计算一个整数20中比特位值为1的位数为____
个人解题思路:
将20转换成二进制码数,10100,有2位1,填2
转换为二进制码数有两种方法,其一是直接除2取余,倒序输出,其二是把20看成16+4,16就是2的四次方,4是2的平方,只有两个位数为1存在的比特值,也能推出填2
3.存放格式
整数负十在64位系统内存中的存放格式为____
个人解题思路:
整数输入值类型为int,64位系统存放格式为补码
-10先写出原码,符号位(正0负1)为1不变
原码:1———0———1010
反码:1———1———0101(原码取反)
补码:1———1———0110(反码+1)
4.异或^交换数值
执行下面代码,得到的结果a=,b=
int a=1,b=2;
a=a^b;
b=a^b;
a=a^b;
个人解题思路:
异或^是位运算符,要将a和b的值换算成二进制数再进行异或^计算
a=1,换算成二进制数是01,b=2,换算成二进制数是10
^相同取0,相异取1
a=a^b=01^10=11=3
b=a^b=11^10=01=1
a=a^b=11^01=10=2
这时输出a=2,b=1