首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >固定宽度整数在乘法上是可分配的吗?

固定宽度整数在乘法上是可分配的吗?
EN

Stack Overflow用户
提问于 2013-01-07 11:05:04
回答 4查看 1.1K关注 0票数 17

对于三个n位有符号整数abc (例如32位),考虑到整数溢出,a * (b + c) == (a * b) + (a * c)总是正确的吗?

我认为这是独立于语言的,但如果不是,我特别感兴趣的是Java的答案。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-01-07 11:19:47

是的,它是成立的,因为整数运算是有限环上的模运算。

你可以在这里看到一些理论讨论:https://math.stackexchange.com/questions/27336/associativity-commutativity-and-distributivity-of-modulo-arithmetic

票数 13
EN

Stack Overflow用户

发布于 2013-01-07 11:20:29

分配特性适用于模运算;由于固定位长2的补码整数运算对于相同(无符号)位长度的模运算是homomorphic的,所以当使用2的补码运算时,分配特性保持不变。

更详细的解释可以在here上找到。

票数 2
EN

Stack Overflow用户

发布于 2013-01-07 11:19:25

是的,它确实适用于Java,包括在溢出的情况下。(某些其他语言没有指定溢出行为,在这种情况下不做任何保证。)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14189299

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档