首页 > 试题广场 >

变量a是一个64位有符号的整数,初始值用16进制表示为:0x

[单选题]
变量a是一个64位有符号的整数,初始值用16进制表示为:0x7FFFFFFFFFFFFFFF;变量b是一个64位有符号的整数,初始值用16进制表示为:0x8000000000000000。则a+b的结果用10进制表示为多少?
  • 1
  • -1
  • 0
  • 2^63+2^62+…+2^2+2^1+2^0
计算机变量以补码形式存放,于是a+b为补码相加:
  0x7FFFFFFFFFFFFFFF
+0x8000000000000000
=0xFFFFFFFFFFFFFFFF
而(0xFFFFFFFFFFFFFFFF)化为原码,即第一位符号位不变,其他位取反后末位加1,得原码为0x8000000000000001,最后转换为10进制即为-1

发表于 2019-03-31 20:17:12 回复(9)
0x7FFFFFFFFFFFFFFF + 1 = 0X8000000000000000,则

a + b = 0X8000000000000000 - 1 + 0x8000000000000000 = -1

编辑于 2019-08-13 14:42:17 回复(0)
二进制表示溢出,全1时表示-1。
发表于 2019-03-29 09:28:52 回复(1)