问题标签 [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.

0 投票
2 回答
81 浏览

javascript - JavaScript 乘法运算

我在我的 FireFox 和 Chrome 控制台中都尝试了这个表达式:

预期结果:1799

实际结果:1798.9999999999998

我也试过:

预期结果:1799

实际结果:1798

为什么会发生这种情况,我如何获得预期的结果?

0 投票
1 回答
2878 浏览

overflow - 这是溢出算术计算吗?

所以当我读这本书时,它说当添加不同的符号和减去相同的符号时不会发生溢出。但是当我这样做时我有疑问:185 - 122 我将 122 的二进制转换为 2s 补码并进行了加法,这是不同的符号:185+(-122) 当我将它们加在一起时,我得到符号位溢出到100111111。但是如果我把左边的MSB剪掉,那就是正确的答案。是溢出吗?

0 投票
1 回答
136 浏览

system - 基于不变生成约束的方法

我已阅读“Sriram Sankaranarayanan、Henny B. Sipma 和 Zohar Mann”的论文“基于约束的线性关系分析”,通过在具有未知系数的给定模板不等式中应用 Farkas 引理来检查抽象解释产生的不动点方程,它计算对系数值的约束,以便将任何解代回模板中产生有效的不变关系。

我遵循了示例 1(在那张纸上) Let V = {x, y}L = { 0 }. 考虑如下所示的过渡系统。每个转换都模拟一个并发过程,它会自动更新变量 x、y。

我通过使用 Farkas 引理(该纸上的示例 2)以及连续(通过转换 τ1 和 τ2)对 Initiation 进行了编码。

作者说:

Π我们用变量固定一个线性转移系统{x1 , . . . , xn },统称为 x。假设系统具有单个位置以简化演示。位置的模板断言是α(c) = c1 x1 + · · · + cn xn + d ≥ 0. 系数变量{c1 , . . . , cn , d}统称为c。系统的转换是{τ1 , . . . , τm },其中τi : , , ρi。初始条件用 Θ 表示。示例 1 中的系统将用作运行示例来说明所提出的想法。

我已经达到了通过将每个转换的启动和连续获得的约束结合起来获得的总体约束(该论文上的示例 4)。

在那一点上,我想可以通过将所有这些编码到像Z3. 事实上,我是通过将线性算术直接编码为Z3

我想一旦我没有l0通过c1, c2, ...,cn找出位置处的任何归纳不变量d作为单个(o范围)值,我就做得不好。

Z3 对所有系数的回答为零:

我试图找到相关的例子,但直到现在还没有运气。

0 投票
1 回答
935 浏览

java - 在 Java 中解析数学方程

我想使用区间算术来计算给定方程的范围。例如,C = f(A, B) 其中

我会给出 A 和 B 的范围作为输入和一个包含 f 的字符串。我拥有的区间算术库可以计算 f = log A 等简单函数的范围。因此,要计算上述函数的范围,我必须手动编写多个步骤,例如首先找到 cos(A),然后 1 - cos(A)依此类推,直到我得到整个方程的范围。我试图找出是否有办法解析这个方程,可能得到解析器在计算过程中计算的步骤,这样在每一步,我都可以找到一个范围,让解析器进入下一步。

为了更清楚,我想知道表达式评估过程中的每一步。例如,如果 f = A + B (1-C)。软件首先计算 1-c,然后计算 B * (1-C),然后将其添加到 A。所以,我需要控制每一步,以便找到迄今为止评估的表达式的范围。

任何指针表示赞赏。

0 投票
3 回答
1451 浏览

c - 将两个 128 位整数相乘

我试图在 C 中将两个 128 位整数相乘。

这是我的算法:

将两个 128 位序列拆分为 S1 和 S2。

然后将 S1 拆分为 S11(前/上半部分)和 S12(后/下半部分),并将 S2 拆分为 S21(前/上半部分)和 S22(后/下半部分)。

将 S12 乘以 S22... = S1222。

将 S11 乘以 S21... = S1121,然后将其乘以 2^128 进行位移

将 S1222 和 S1121 组合成一个新阵列的前半部分和后半部分。我们称它为“Array1”。新数组的长度是 S1 的两倍。

然后我们必须将 S12 乘以 S21 和 S11 乘以 S22。我将这两者相乘,分别得到 S1221 和 S1122(并相应地对它们进行了位移)。现在我必须将它们添加到 Array1。这是我寻求帮助的部分。我不确定如何将这些一一添加到 Array1。请记住,当您从 Array1 的 3/4 到 Array1 的 1/4 时,可能会有进位 1,因为这是需要添加 S1221 和 S1122 的跨度。

我的问题是:如何将 dstM1 和 dstM2 添加到已经填充的数组 d 中?

0 投票
0 回答
24 浏览

integer-arithmetic - 一个函数,在正 int 上为 -1,在负 int 上为 +1

我没有关键字来问这个问题。我想做的是:

任何关键字?

0 投票
1 回答
506 浏览

javascript - 在比较Javascript中的数字时如何避免自动类型强制?

我想知道在 JavaScript 中使用小于和大于运算符比较数字时如何避免自动强制转换。

例如,我已经知道 == 运算符会进行类型强制,例如:

而 === 运算符则不会,例如:

但是,在比较数字时如何避免这种情况?例如:

我想避免这种自动类型强制。

0 投票
3 回答
2030 浏览

c++ - 无符号算术和整数溢出

我试图理解算术溢出。假设我有以下内容,

y*z 可能导致整数溢出。将其中一个操作数转换为 unsigned long long 是否可以缓解此问题。64 位操作数与 32 位操作数相乘的预期结果是什么?

0 投票
2 回答
2287 浏览

c - 具有不同 int 类型的操作

我有一个使用多种不同 int 类型的程序。

最常用的是uint64_t和标准int。但是我想知道我是否可以安全地在它们之间进行混合操作。

例如,我有一个uint64_t,我想向int它添加一个并将该值存储为另一个uint64_t

做这样的事情安全吗?我必须先转换inttouint64_t才能对其使用操作吗?

我在网上真的找不到关于它的东西。它可能只是被允许的,没有人质疑它或我的谷歌查询是错误的。

无论如何,基本上我的问题是我可以混合使用不同类型的整数并进行操作吗?

0 投票
1 回答
1238 浏览

vb.net - 如何在一个 TextBox 中进行算术运算?

例如我写TextBox1

4*5或者3-2

如何让答案出现在同一个文本框中?

我试过了,但它还是没用

它只显示第一个数字