问题标签 [integer-arithmetic]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 如何在 C++ 中计算 A、B、C <= 10^18 的 (A*B)%C?
例如,A=10^17、B=10^17、C=10^18。
乘积 A*B 超过了 long long int 的限制。
此外,编写 ((A%C)*(B%C))%C 也无济于事。
c - C - 8位微处理器上的32位和16位算术
我正在为具有 32kb ram 和高达 2.5mbytes 数据/代码 rom 的旧 8 位微处理器(Hu6280 - 旧 NEC PC-Engine 控制台中的 WDC 65C02 衍生产品)编写一些代码。该语言是 Small-C 的一种变体,但仅限于以下两种基本类型:
它没有struct
支持,也没有 long int 支持。
我正在编写一个 FAT 文件系统库来与主要为加载游戏 ROM 映像而开发的 SD 卡读卡器接口,但是一个有进取心的黑客编写了一些程序集以允许从控制台端读取原始扇区。他通过将 32 位扇区地址的 4 个 8 位值填充到 4 个连续的内存地址(字符地址 [4];)中来实现这一点。我的 C 代码利用他的工作从 SD 卡上读取(目前)dos MBR 引导扇区和分区类型信息。我有 MBR 校验和验证和 FAT 分区检测工作。
但是,由于我需要支持 FAT32(这是 SD 卡设备上的 FPGA 支持的),大多数用于查找目录条目和文件的扇区和集群算法将基于 32 位 LBA 扇区值。
基于上述限制,我必须使用哪些简单的机制来加/减/乘 8/16/32 位整数?有没有人有任何现成的 C 例程来处理这个?也许是这样的:
编辑:根据上述回复,这是我迄今为止提出的 - 这还没有经过测试,我需要对乘法和减法做类似的事情:
编辑 2:这是模拟 32 位 + 32 位整数添加代码的更新和测试版本。它适用于我迄今为止尝试过的所有值。不处理大于 32 位无符号整数的值的溢出(我的目的不需要):
在搜索了一些之后,我还在一些 PIC 控制器上找到了一些对 32 位算法的引用:
http://web.media.mit.edu/~stefanm/yano/picc_Math32.html
虽然在他们的加/减代码中有一些内联的 PIC 汇编,但那里有一些有用的平台无关的基于字符的 C 函数,它们已经实现了移位、比较、递增/递减等,这将非常有用。接下来我将研究减法和乘法 - 感谢您提供信息;我想我当时在看东西,并认为它们比需要的要难得多。
assembly - 两个 16 位数字的乘法 - 为什么结果是 32 位长?
如果我将两个 16 位数字相乘,结果将是 32 位长。但为什么会这样呢?对此有什么明确的解释?
对于我的正确理解:计算是:n 位数乘以 m 位数得到 (n+m) 位数?
performance - 这是否可以在 Dart 中编写适用于具有 32 位整数的 32 位机器的高性能代码?
当在 Dart 语言中使用 32 位整数在 32 位机器上工作时,我对性能如此巨大的差异感到有点沮丧。
这是否意味着 Dart VM 仍未针对整数运算进行优化?
这是我非常简单的测试。
输出:
这意味着在某些real
情况下性能可以慢130倍?
c - 大整数算术
我想知道用于在 C 中对非常大的整数执行算术运算的不同技术。我知道的一种技术是使用字符串来保存一个数字并为其定义操作加法、减法等。我对使用图书馆不感兴趣,这个问题纯粹是为了知识。请建议使用的任何其他此类方法/技术。
c - 算术溢出是否等同于模运算?
我需要在 C 中做模 256 算术。所以我可以简单地做
代替
java - 初级Java程序员算术错误
我最近开始涉足 Java 编程,并认为自己是一名编程新手。看来我的源代码算术有问题。我已经验证了所有嵌套的 if-else 语句,它们都符合最终 else 语句的算法。它没有正确计算我已经像上面的 if-else 语句一样设置了算术。
else 语句假设从金额中减去 40,然后收取 1% 的费用。我已经尝试过 else 语句fee = ((checkAmount - 40) * .01)
和fee = ((checkAmount * .01) - 40)
这只是书中的一个练习
conditional - 如何仅使用按位或算术运算符来表达术语( a < b ? 0 : 1 )?
假设变量 a 和 b 是 32 位整数,有没有办法在不使用三元或比较运算符的情况下比较两者并返回 0 如果 a < b 和 1 如果 a >= b?
c++ - 我可以确保溢出整数运算不会发生异常吗?
我正在编写一个对长值进行一些算术运算的代码,它不应该产生溢出异常。
代码需要在 windows (visual studio) 和 Linux (ARM Linux) 上编译。
是否有任何编译指示或编译时指令可用于告诉编译它不应为该特定代码生成溢出异常。
这里的要点是:
1-它适用于Windows和Linux
2-不管项目的一般配置如何,这部分都不应该产生溢出异常。(因此在项目中设置参数不是一个好的解决方案)。