问题标签 [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 投票
17 回答
22487 浏览

c - C中没有减号的减法

如何在没有-运算符的情况下减去 C 中的两个整数?

0 投票
9 回答
44684 浏览

c++ - 完美的正方形和完美的立方体

c++中是否有任何预定义的函数来检查数字是否是任何数字的平方并且对于立方体是否相同..

0 投票
8 回答
53645 浏览

c - 如何在内存中存储任意大的整数值?

我必须存储一个大于 long 数据类型最大值的整数值。我将如何在内存中存储和操作这个值?

如果可能,请举例说明。

0 投票
1 回答
665 浏览

math - 32 位定点溢出

我正在 32 位 Windows PC 上进行一些“早期计算”,并查看限制。

现在,2**32 是 4,294,967,296,我发现

完全没问题,并且

非常正确地溢出。

令我困惑的是

溢出,尽管产品 4294967290 在范围内。

有人感兴趣吗?

0 投票
12 回答
1118190 浏览

bash - 如何在 Bash 脚本中添加数字?

我有这个 Bash 脚本,我在第 16 行遇到了问题。如何获取第 15 行的先前结果并将其添加到第 16 行的变量中?

0 投票
6 回答
121440 浏览

c - Is unsigned integer subtraction defined behavior?

I have come across code from someone who appears to believe there is a problem subtracting an unsigned integer from another integer of the same type when the result would be negative. So that code like this would be incorrect even if it happens to work on most architectures.

This is the only vaguely relevant quote from the C standard I could find.

A computation involving unsigned operands can never overflow, because a result that cannot be represented by the resulting unsigned integer type is reduced modulo the number that is one greater than the largest value that can be represented by the resulting type.

I suppose one could take that quote to mean that when the right operand is larger the operation is adjusted to be meaningful in the context of modulo truncated numbers.

i.e.

0x0000 - 0x0001 == 0x 1 0000 - 0x0001 == 0xFFFF

as opposed to using the implementation dependent signed semantics:

0x0000 - 0x0001 == (unsigned)(0 + -1) == (0xFFFF but also 0xFFFE or 0x8001)

Which or what interpretation is right? Is it defined at all?

0 投票
3 回答
2873 浏览

r - 大整数的乘法

我尝试乘以111111111*111111111,这与 相同111111111^2,但结果不正确。它应该给出12345678987654321,但它给出了一个舍入误差。我是否需要对长数字使用一些特殊的变量类型,或者这是 R 的错误?

0 投票
2 回答
4003 浏览

performance - 浮点乘法计算百分比的快速替代方法

我正在 Arduino 上编写一些代码,该代码需要快速运行并对整数百分比进行粗略近似。

例如,给定一个数字,我想找到它的 90%、70% 或 30% 等。显而易见的方法是乘以一个浮点数,例如。x * 0.9; 或 x * 0.3;但是因为我需要速度,所以我想避免浮点计算。如果我只是除以 2 的幂,我会进行位移,但是是否有类似的技术可以使用整数来逼近 90%、80% 等?

0 投票
3 回答
7864 浏览

c++ - 为什么int加uint返回uint?

int plus unsigned int 返回一个 unsigned int。应该是这样吗?

考虑这段代码:

0 投票
5 回答
19864 浏览

c# - 为什么 ushort + ushort 等于 int?

今天之前我试图添加两个 ushort,我注意到我必须将结果转换回 ushort。我认为它可能已经变成了一个 uint(以防止可能的意外溢出?),但令我惊讶的是它是一个 int (System.Int32)。

这是否有一些聪明的理由,或者可能是因为 int 被视为“基本”整数类型?

例子:

编辑:就像 GregS 的回答所说,C# 规范说两个操作数(在本例中为“a”和“b”)都应转换为 int。我对为什么这是规范的一部分的根本原因很感兴趣:为什么 C# 规范不允许直接对 ushort 值进行操作?