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

c# - 检查算术溢出并获取溢出计数?

检测算术溢出(或下溢)并获取溢出计数的最合适方法是什么?

为了更容易理解,我将使用byte,但这对于int任何其他基本整数类型都是相同的。现在想象一下我的值是 240 并且想给它加上 24。显然是算术溢出。使用checked关键字这至少很容易检测到......

...通过抛出异常。

这就是我目前正在使用的。

但是,我不太喜欢这个中的异常处理。异常通常非常昂贵,我想从一开始就避免它们。对我来说,这似乎是一个Boneheaded-Exception无论如何。我可以做一些算术魔法来预先检测到这个吗?

0 投票
2 回答
206 浏览

c - 不使用加法运算符将两个数字相加

在 c 中 ~ 是 1 的补码运算符。这相当于: ~a = -b + 1 所以,a - ~b -1 = a-(-b + 1) + 1 = a + b – 1 + 1 = a + b

谁能给我解释一下?

0 投票
1 回答
42 浏览

arrays - 产生包含数组的整数的数学方法(排列)

我需要一个数学函数来生成包含某些整数的所有变体的数组,即所谓的置换,例如:

如果可以管理,应该可以生成多达一百个 {{1,2,3,....100},{...}} 或更多的数组。

你知道任何可以产生这种数组的公式或算法吗?

0 投票
4 回答
812 浏览

algorithm - Computing the square root of 1000+ bit word in C

Imagine that we have e.g. 1000 bit word in our memory. I'm wondering if there is any way to calcuate a square root of it (not necessarily accurate, lets say without floating point part). Or we've got only memory location and later specified various size.

I assume that our large number is one array (most significant bits at the beginning?). Square root is more or less half of original number. When trying to use Digit-by-digit algorithm there is a point when usnigned long long is not enough to remember partial result (subtraction with 01 extended number). How to solve it? What with getting single digit of the large number? Only by bitmask?

While thinking about pseudocode stucked at this questions. Any ideas?

0 投票
2 回答
2790 浏览

java - Java8 无符号算术

据广泛报道,Java 8 具有对无符号整数的库支持。但是,似乎没有文章解释如何使用它以及有多少是可能的。

像 Integer.CompareUnsigned 之类的一些函数很容易找到,并且似乎可以满足人们的期望。但是,我什至无法编写一个简单的循环来循环 unsigned long 范围内的所有 2 的幂。

产生输出

我是否遗漏了什么,或者这个简单的任务仍然需要外部库?

0 投票
6 回答
2358 浏览

java - 1004L至1000L(或1006L至1010L)的圆形长

假设我有Long someLong = 1004L. 我可以使用什么有效的方法将其四舍五入1000L?请注意,我实际上并不知道,someLong == 1004L所以我不能简单地做someLong -= 4L;. 我需要一个通用的方法。我还希望能够向下舍入 each5而不是 each 10,例如舍入到的函数1005L(因为如果我们按5's 舍入,那么它将向上舍入而不是向下舍入)。

更多示例 .. 可能是我有1926L并且我想四舍五入到5我需要的意思1925L。或者我需要四舍五入到10我需要的意思1930L

0 投票
13 回答
33784 浏览

c++ - 确定一个数字是十的倍数还是在一组特定的范围内

我的程序中有几个循环需要。我可以写出伪代码,但我不完全确定如何在逻辑上编写它们。

我需要 -

这是一个蛇和梯子棋盘游戏,如果它对我的问题更有意义的话。

我想我需要使用模数的第一个if语句。if (num == 100%10)是正确的吗?

第二个我不知道。我可以把它写出来if (num > 10 && num is < 21 || etc.),但必须有比这更聪明的东西。

0 投票
3 回答
5549 浏览

c - 逐位查找非常大数字的整数平方根的有效算法是什么?

我需要编写程序来找到一个数以千计数字长的整数平方根。我不能使用 Newton Raphson,因为我没有数据类型来存储和划分如此大的数字。我在 C 中使用一个长数组来存储数字。是否有任何算法可以通过迭代数字来找到平方根?

编辑:

我不能使用像 GMP 这样的外部库。

0 投票
4 回答
151 浏览

math - 求整数的第十位等价物

一个人如何通过计算和动态地推导出一个整数的“第”位等价物?例如:

  • 187 为 0.187
  • 16 为 0.16
  • 900041 为 0.900041

我知道需要计算确切的位置。我知道一个技巧是把整数变成一个字符串,计算有多少个地方(有多少个单独的字符),然后创建我们的未来值乘以得到的十分之一的值 - 就像我们在笔和纸 - 例如:

但是解决这个问题的非字符串算术方法是什么?

0 投票
1 回答
413 浏览

haskell - 为什么 divMod 向下舍入而不是确保正余数?

大多数数学学生和Haskellers都熟悉的欧几里得除法定理指出:

给定两个整数 a 和 b,其中 b ≠ 0,存在唯一整数 q 和 r,使得 a = bq + r 且 0 ≤ r < |b|。

这给出了商和余数的传统定义。这篇1992 年的论文认为它们是用编程语言实现的最佳方法。那么,为什么divMod总是将红利四舍五入到负无穷呢?

div 和 quot 之间的确切区别表明divMod已经做了相当多的额外工作quotRem;似乎不太可能做到正确。

代码

divMod基于GHC.Base. 我很确定这是对的。

这不仅产生了令人愉快的欧几里得结果,而且实际上比 GHC 代码更简单。它显然最多执行两次比较(而不是 GHC 代码的四次)。

事实上,这很可能完全没有分支,而不需要比我更了解原语的人做太多工作。

无分支版本的要点(大概了解更多的人可以使其更高效)。