计算题解析
一、变量a是一个64位有符号的整数,初始值用16进制表示为:0xf000 0000 0000 0000;变量b是一个64位有符号的整数,初始值用16进制表示为:0x7FFF FFFF FFFF FFFF。则a-b的结果用10进制表示为多少?2^62+2^61+2^60+1
- 首先,我们可以得出:0x7FFF FFFF FFFF FFFF + 1 = 0x8000 0000 0000;
- 因此:0x7FFF FFFF FFFF FFFF = 0x8000 0000 0000 - 1;
a - b = 0xf000 0000 0000 0000 - ( 0x8000 0000 0000 - 1 )
= 0xf000 0000 0000 0000 - 0x8000 0000 0000 + 1
= 0x7000 0000 0001
= 7 * 16^15 + 1 * 16 ^ 0
= 7 * 2 ^ 60 + 1
= ( 2 ^ 2 +2 ^ 1+ 2 ^ 0) * 2 ^ 60 + 1
= 2 ^ 62 + 2 ^ 61 + 2 ^ 60 + 1
二、已知 i = 5,int s = (i++) + (++i) + (i- -) + (- -i);s = ()//s的值是什么?
- i ++ :i 先参与运算,再 加 1;++i:i 先加 1,再参与运算
s = (i++) + (++i) + (i- -) + (- -i)
= ( 5 ) + ( ++6 ) + ( 7-- ) + ( --6 )
= 5+7+7+5
= 24