integer-overflow相关内容

Delphi:如何避免EIntOverflow下溢?

微软已经在GetTickCount的文档中说过,你不能比较滴答计数,以检查间隔是否已经过去。例如: 不正确(伪代码): code> DWORD endTime = GetTickCount + 10000; // 10 s from now ... if(GetTickCount> endTime) break; 上面的代码是坏的,因为它可以接受点击 ..
发布时间:2017-04-24 22:16:27 Delphi

我应该使用无符号整数来计数会员吗?

答案 例如,假设一个类 TList = class private FCount:Cardinal; public 属性Count:Cardinal read FCount; 结束 这是有道理的,不是吗?存储在列表中的项目数量不能为负数,那么为什么不使用无符号整数类型呢?我认为总是使用最小的一般(最特殊的)类型是一个很好的原则。 现在 ..
发布时间:2017-04-24 03:20:48 Delphi

当整数列上的auto_increment达到数据库中的max_value时,会发生什么?

我正在实现一个数据库应用程序,我将使用JavaDB和MySQL作为数据库。我有一个ID列在我的表有整数作为类型,我使用数据库auto_increment函数的值。 但是,当我获得超过2或4)十亿个职位和整数还不够吗?是整数溢出并继续还是抛出一个异常,我可以处理? 是的,我可以更改为long作为数据类型,但如何检查什么时候需要?我认为如果我使用长数据类型作为ID列,获取last_inse ..

Clojure - 用大数字计算

我想在clojure中计算!1000 ,我该怎么做而不会得到一个整数溢出异常? 我的阶乘代码现在是:(reduce *(range 1 1001))。 方案 您可以使用 *'运算符来支持任意精度,自动将结果提升到BigInt,以防溢出: (reduce *'(范围1 1001)) ..
发布时间:2016-11-27 18:00:15 其他开发语言

用于安全整数转换的C ++模板

我想写一个C ++模板函数,将在不同整数类型之间的转换中抛出一个运行时异常,这些类型有不同的宽度和可能的有符号/无符号不匹配。为了这些目的,我不关心从浮点类型转换为整数类型,也不担心其他对象到对象转换。我想这样做而不必编写大量的特殊情况代码。这是我目前有的: template void safe_cast(const T& source,R& result) { ..
发布时间:2016-11-13 20:26:10 C/C++开发

向左移位和丢弃位

让我们考虑将无符号短值(或任何其他无符号整数类型)的右N位置零的函数(它的可能实现之一)。可能的实现可能如下所示: template unsigned short zero_right(unsigned short arg){ 使用type = unsigned short; constexpr type mask =〜(type(0) ..
发布时间:2016-10-27 00:43:48 C/C++开发

两个非常大的数的乘积的第一个数字

有2个大整数,x和y使得z = x * y溢出。 我想计算x的第一个数字。直接这样做是不可能的,因为结果溢出。 我想知道是否有一个特定的技术。 例如:10000000000000000000000000000000000 * 20579725928294522859735727575,这里的第一个数字是2,我可以直接看到,但是,除了这个特殊情况,有没有办法? #include ..
发布时间:2016-10-25 16:57:41 C/C++开发

模量溢出?

我知道(INT_MIN / -1)溢出,但是(INT_MIN%-1)不会溢出。至少这是在两个编译器中发生的,一个是前c ++ 11(VC ++ 2010)和另一个后c ++ 11 GCC 4.8.1 int x = INT_MIN; cout -2147483648 0 ..
发布时间:2016-10-24 12:59:56 C/C++开发

说明两个数字的安全平均值

每当我需要为二进制搜索等算法平均两个数字时,我总是这样做: int mid =低+((高 - 低)/ 2); 我最近看到了另一种在这篇文章,但我不明白。它说你可以在Java中这样做: int mid =(low + high)>>> 1; 或在C ++中: int mid =((unsigned int)low +(unsigned ..
发布时间:2016-10-23 19:25:00 Java开发

说明两个数字的安全平均值

每当我需要为二进制搜索等算法平均两个数字时,我总是这样做: int mid =低+((高 - 低)/ 2); 我最近看到了另一种方法,在这篇文章,但我不明白。它说你可以在Java中这样做: int mid =(low + high)>>> 1; 或在C ++中: int mid =((unsigned int)low +(unsign ..
发布时间:2016-10-23 15:05:56 Java开发

用于安全整数转换的C ++模板

我想写一个C ++模板函数,将在不同整数类型之间的转换中抛出一个运行时异常,这些类型有不同的宽度和可能的有符号/无符号不匹配。为了这些目的,我不关心从浮点类型转换为整数类型,也不关心其他对象到对象转换。我想这样做而不必编写大量的特殊情况代码。这是我目前有的: template void safe_cast(const T& source,R& result) { ..
发布时间:2016-10-14 10:50:00 C/C++开发

检查C ++中的下溢/溢出?

有一个通用的方法来检查给定数据类型(uint32,int等)的溢出或下溢吗? 我正在这样做: uint32 a,b ,C; ... //初始化a,b,c if(b a - =(c-b) } 当我打印一些迭代后,它显示一个大数字,如:4294963846。 code> uint32 a,b; //赋值 uint32 result ..
发布时间:2016-10-13 10:00:40 C/C++开发

C ++中大数的模数化指数

所以我最近一直在实施米勒 - 拉宾素性测试。我把它限制在所有32位数字的范围,因为这是一个只是为了乐趣的项目,我正在做的是熟悉c ++,我不想与任何64位工作一会儿。另外一个好处是,该算法对所有32位数字都是确定性的,所以我可以显着提高效率,因为我知道什么证人要测试。 数字,算法工作异常好。然而,过程的一部分依赖于模幂运算,即(num ^ pow)%mod。因此,例如 3 ^ 2%5 ..
发布时间:2016-10-13 09:55:19 C/C++开发