返回信息流不会算,网上也没查到资料,来这里求助~
这是一条镜像帖。来源:北邮人论坛 / cpp / #98946同步于 2019/5/9
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
0x7fff * 0x7fff等于多少呢?
mandy4321
2019/5/9镜像同步9 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
不考虑截断问题
└─[$] <> python
Python 2.7.12 (default, Nov 12 2018, 14:36:49)
[GCC 5.4.0 20160609] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> hex(0x7fff*0x7fff)
'0x3fff0001'
0x7fff = 2^15 - 1
0x7fff * 0x7fff = (2^15 - 1) * (2^15 - 1) = 2^30 - 2^16 + 1
假设最低比特为的下标为0,2^m为第m位为1,其余为0.
现在考虑2^m - 2^n (m > n),根据退位原则,该结果数值第m位为0,从m-1到n位为1,其余为0.
因此,不难得出2^30 - 2^16 + 1 = 00111111111111110000000000000001
化简为十六进制为0x3fff0001,转换为十进制为1073676289
可验证这就是2^30 - 2^16 + 1的计算结果
第一直觉就是这个运算会溢出,是我想错了
【 在 wu2011211367 的大作中提到: 】
: emmm 是我的话会把他们都转成10进制,直接乘,然后再转回16进制,如果问的单纯是计算问题的话。。。
那么问题来了,0x10000 * 0x10000等于几呢?[ema21][ema21][ema21]
【 在 mandy4321 的大作中提到: 】
: 第一直觉就是这个运算会溢出,是我想错了
溢出了,等于0?
【 在 tonyjansan 的大作中提到: 】
: 那么问题来了,0x10000 * 0x10000等于几呢?[ema21][ema21][ema21]
: