首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >可以在J中添加32位整数和wraparound吗?

可以在J中添加32位整数和wraparound吗?
EN

Stack Overflow用户
提问于 2015-01-22 02:13:04
回答 1查看 109关注 0票数 1

有没有可能在J中对数字进行算术运算,并让它们的行为像在类似C的语言中那样?也就是说,如果我从两个32位(我想是64位)的数字开始,有没有办法加减它们,让它们像C/C++/Java中那样溢出/下溢/回绕?

EN

回答 1

Stack Overflow用户

发布于 2015-01-22 05:01:43

因此,处理溢出的一种直接方法是使用残差(|):

代码语言:javascript
复制
   (2x ^ 32) | 4000000000 + 1000000000
705032704
   overflow =: ] |~ 2x ^ [
   32 overflow 4000000000 + 1000000000
705032704

您可以使用Base (#.)和Antibase (#:)生成值的二进制表示形式:

代码语言:javascript
复制
   [ reg =: (32 $ 2) #: 1 2 3 4294967294 4294967295 4294967296 4294967297
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
   3 { reg
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0
   #. 3 { reg
4294967294
   #. reg
1 2 3 4294967294 4294967295 0 1
   (32 $ 2)&#: #. +/ 0 2 { reg
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0
   (32 $ 2)&#: #. +/ 0 4 { reg
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

可能有一些更酷的方法来使用外部(!:)系统函数来做到这一点,但我无法做到这些。

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

https://stackoverflow.com/questions/28074018

复制
相关文章

相似问题

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