停止位增长用于功率计算
2次浏览(过去30天)
显示旧的注释
嗨
我需要一个逻辑来检查位增长的情况下字长为32 /16/8位
我使用以下代码来检查位增长,并限制最大和最小32位值,但这似乎不工作
案例2
!!
% Case -1
C =幂(- 9,28)
如果(c >= (2^32-1))
C = min(C,2^31);
结束
如果(c >= -2^31)
C = -2^31;% min (C、2 ^ 31)
结束
C
% Case -2
C =幂(- 9,29)
如果(c >= (2^32-1))
C = min(C,2^31)
结束
如果(c >= -2^31)
C = -2^31;% min (C、2 ^ 31)
结束
C
我需要逻辑的正负尾数和指数值。结果C不能超过32位字长
谢谢你! !
0评论
答案(2)
约翰D 'Errico
2021年9月30日
编辑:约翰D 'Errico
2021年9月30日
情况1:你不能将一个双精度数提高到超过flintmax(2^53 - 1)的幂,并期望结果是正确的。
flintmax
这意味着当你执行这个:
权力(-97年28)
如果您希望结果具有正确的数字,那么您应该期待纯粹的垃圾。
信谊(-97)^ 28%正确
权力(-97年28)%大部分是垃圾
sprintf (' % 55 f '、电力(-97年28))%注意低位数的差异
情况2:虽然你可能认为-2^31使数字-2的幂为负,但事实上,它形成了2^31,然后使结果为负。如果幂是奇数,那么这没有关系,因为负号起作用。但如果幂是偶数,那就有关系了。
一个数的幂次运算比一元减号运算的优先级高。所以这两个操作是不一样的:
2 ^ 30
(2) ^ 30
我用了偶次来证明它们是不同的。