什么是整数溢出?(an integer overflow?)

整数溢出是指在某些计算机数据类型中发生的现象,当它们达到其适用范围的末端时,其符号从正变为负,反之亦然。在计算机范围中,整数数据类型具有圆形范围,当它们到达范围的一端时,会立即移动到范围的另一端。这也称为整数溢出。...

整数溢出是指在某些计算机数据类型中发生的现象,当它们达到其适用范围的末端时,其符号从正变为负,反之亦然。在计算机范围中,整数数据类型具有圆形范围,当它们到达范围的一端时,会立即移动到范围的另一端。这也称为整数溢出。

C++ doesn't have explicit bounds checking for arrays.

有符号整数可以保存从-231到(231)-1的值范围。此整数的值不能为(-231)-1;相反,它增加到的下一个数字位于其范围的另一端:(231-1)。在其范围的末尾从负变为正就是整数溢出的一个例子。同样,整数的值不能为231;该值将切换到其范围的另一端,并变为-231。

这种溢出在编程时会产生严重后果。一个数组中只能有整数类型允许的数量的索引,而负索引不计算在内。如果程序员试图创建大于整数类型允许的数组,则可能会发生严重的内存错误,因为整数溢出将导致负索引。这对于那些没有明确的数组检查(如C++)的语言来说尤其危险。

发生整数溢出时,可能会发生相关类型的溢出,如缓冲区溢出、堆溢出和堆栈缓冲区溢出。在所有这些情况下,整数溢出会使内存结构的数据量超过这些结构所能容纳的数据量。在简单程序中,这些溢出通常只会导致无效读或无效写错误。然而,黑客对这一问题的操纵可能导致内存错误,从而导致更严重的问题。

在大多数简单的程序中,整数溢出不是主要问题。整数类型的限制足够大,除非同时处理大量数据,否则溢出问题不会发生。在某些情况下,可以通过使用范围更大的更大数据类型来缓解溢出,如递增计数器的情况。理论上,较大的数据类型最终可能会遇到相同的溢出问题,但随着数据类型范围的增大,这样做的可能性会减小。每个整数数据类型的范围至少是下一个最小数据类型的两倍,因此有足够的空间容纳其他数据。

  • 发表于 2021-12-11 14:23
  • 阅读 ( 155 )
  • 分类:互联网

你可能感兴趣的文章

整数(integer)和浮动(float)的区别

...基元数据类型相关的包装类。 目录 1. 概述和主要区别 2. 什么是整数 3. 什么是浮动 4. 整数与浮点的相似性 5. 并排比较-以表格形式显示整数与浮点 6. 摘要 什么是整数(integer)? Integer是Java中的一个包装类。对应的数据类型是int。...

  • 发布于 2020-10-19 08:34
  • 阅读 ( 752 )

stack overflow的开发者故事是为开发者构建的简历

...师或开发人员,你知道整理简历并不总是那么容易。StackOverflow引入了一个名为开发者故事(DeveloperStories)的新工具,希望它能让你的简历看起来更容易。开发者故事通过提供两个基本视图将自己与传统简历区分开来:普通简历...

  • 发布于 2021-05-16 18:48
  • 阅读 ( 104 )

整数(integer)和指针(pointer)的区别

整数与指针 “整数”和“指针”在大多数计算机编程语言中都有应用。 编程语言中的“整数”可以定义为表示数学子集的任何数据类型。另一方面,“指针”可以定义为一种类型,它引用或指向存储在计算机内存某个部分的...

  • 发布于 2021-06-23 14:07
  • 阅读 ( 248 )

实数(real numbers)和整数(integers)的区别

...整数是一个子集,其特征是可以具有负性质的整数。   什么是实数(real numbers)? 实数是你可以在数列上找到的值,它通常表示为一条几何水平线,其中一个选择的点作为“原点”。右边的是阳性,左边的是阴性。“真实”的描...

  • 发布于 2021-06-25 07:14
  • 阅读 ( 1258 )

内景(int)和java中的整数(integer in java)的区别

...ava相关的两个概念是int和Integer。 覆盖的关键领域 1.Java中什么是int–定义,功能2.Java中什么是Integer–定义,功能3.Java中int和Integer的区别是什么–关键区别的比较 关键术语 int、Integer、OOP 什么是内景(int)? 变量是保存值的内存...

  • 发布于 2021-07-01 12:32
  • 阅读 ( 275 )

实数(real numbers)和整数(integers)的区别

...是“整体”或“完整”。实数与整数比较表(表格形式)什么是实数(real numbers)?实数是数字世界中不可分割的一部分。他们在数学发展中的作用是不可否认的。任何出现在你脑海中的数字(虚数除外)都是实数。可以是正的,...

  • 发布于 2021-07-09 21:33
  • 阅读 ( 543 )

整数(integer)和数(number)的区别

关键区别:整数是指一个整数,意思是它不是一个分数的形式。整数由整数及其对立面组成。一个数字可以用一个词、符号或数字来表示,这些数字用来表示一个特定的量。数字通常用于测量、标记和排序。 整数可以被描述为...

  • 发布于 2021-07-13 16:10
  • 阅读 ( 402 )

整数(integer)和整数(whole number)的区别

关键区别:整数是指一个整数,意思是它不是一个分数的形式。整数由整数及其对立面组成。整数是自然数,包括零。 整数可以被描述为不包含任何小数或十进制成分的数字。整数也包括负数。值得一提的是,0也包含在整数...

  • 发布于 2021-07-13 16:39
  • 阅读 ( 597 )

实数(real number)和整数(integer)的区别

...理数。有理数是一个可以用分数表示但分母不为零的数。整数是不以分数形式出现的整数。整数可以是正的也可以是负的。 实数包括所有有理数和无理数。实数可以用十进制表示法写成。它们甚至包括那些需要无限小数展开的...

  • 发布于 2021-07-13 16:47
  • 阅读 ( 403 )

整数(integer)和指针(pointer)的区别

关键区别:整数是指表示数学整数子集的任何数据类型。指针是其值引用另一个值或存储在系统中的数据的数据类型。 整数和指针在计算机编程语言中都很常用。这两个术语彼此不同,但指的是存储在计算机中的数据。整数是...

  • 发布于 2021-07-13 16:50
  • 阅读 ( 201 )
ninihhhhh
ninihhhhh

0 篇文章

相关推荐