整数溢出-C

首页 2024-07-10 10:15:33

整数溢出

当我们限制整数的最大尺寸,我们的结果超过最大尺寸时,整数溢出是一个问题,让我使用基数 10 进行演示。

假设我们最多有 3 个以 10 它是基数的数字,所以我们能得到的最大值是 但让我们试着超越限制,通过 999 上加 1 为了更好地理解,我们显然知道结果应该是 1000 ,但在我们有限的环境中,我们得到的值是 0...为什么会这样?

很简单,它对我们的数字进行了正常的加法算法,所以它添加了最后一个数字 1,得到了 10,然后进位 所以又加了 9 和 1.同样的事情,结果是0,有进位1。最后一个,我们把1加到9,得到进位1,值为零,但是我们不能把进位数加到数字的前面,因为我们的数字被限制了。 3 位数字,因此,我们忘记了进位,并在处理器中设置了溢出标志。

这与计算机中发生的情况相同。让我们看看 C:
中的示例

#include <stdint.h>
#include <stdio.h>

uint8_t get_<a style="color:#f60; text-decoration:underline;" href="https://www.php.cn/zt/72718.html" target="_blank">overflow</a>(uint8__t num)
{
    uint8_t 最大值 = 255;

    返回最大值 数字;
}

int32_t 主函数(无效)
{
    printf("%un", get_overflow(1));
    printf("%un", get_overflow(2));
    printf("%un", get_overflow(3));
    返回0;
}
</stdio.h></stdint.h>

在这里,因为我们使用它 8 无符号整数意味着我们只能表示最大的 8 位无符号数,即 255(从 0 到 255)如果我们试试的话 255 上加 1.它结束并重新开始 0 开始计数。

但是,如果我们使用带有符号的数字,就会发生一些奇怪的事情,请参考以下示例:

#include <stdint.h>
#include <stdio.h>

int8_t get_overflow(int8_t num)
{
    int8_t 最大值 = 127;

    返回最大值 数字;
}

int32_t 主函数(无效)
{
    printf("%dn", get_overflow(1));
    printf("%dn", get_overflow(2));
    printf("%dn", get_overflow(3));
    返回0;
}
</stdio.h></stdint.h>

Obs:在这里,我们必须记住,由于符号占据一个,无符号整数的范围从-128到127减半。
如果您操作上述代码,您可能会感到惊讶,该值不是零,而是该类型可容纳的最小数字(-128)。为什么??

这种情况发生是因为如何用二进制存储符号数字,它们以我们称之为补码的方式存储,以便于操作。

二进制补码??

补码是一种相对简单的二进制数表示方法,您可以根据以下算法进行测试。
输入:一个数字x

  1. 将所有‘x位翻转(如果是1,则变为0,如果为零,则变为1)
  2. 号码加一

让我们看一个数字 3 简单的例子,二进制为 0011,翻转所有位置,将是 1100,然后加 1 将是 1101

由于这种奇怪的表达形式,我们在溢出时得到的数字是 -128.最酷的是,如果我们使用二进制补码,我们可以使用相同的电路进行加减。

以上是整数溢出的详细内容,请关注其他相关文章!


p

最新文章

  • 整数溢出-C

  • 自建服务器,掌控未来,高效稳定,尽在掌握!

  • 理解复制到剪贴板:高效数据传递的秘诀

  • 踏上为期一年的软件工程之旅:从 C 到 Python、JavaScript、Node.js、DevOps 等-C

  • 远程桌面连接:命令使用详解与图解(以下是对这个标题的扩展解释和内容建议)内容建议:首先,你可以从远程桌面连接(Remote Desktop Connection, 简称RDP)的基本概念和用途入手,解释为什么需要使用远程桌面连接命令。然后,详细列出并解释如何使用远程桌面连接的命令,包括命令的语法、参数和示例。接下来,为了增强说服力和直观性,你可以插入一些图片来辅助说明。这些图片可以包括:1. 命令提示符(Command Prompt)或PowerShell窗口的截图,展示如何输入远程桌面连接命令。2. 远程桌面连接对话框的截图,展示如何设置连接参数。3. 连接成功后远程桌面的截图,展示用户如何操作远程计算机。在每个步骤旁边,你可以添加一些简短的文字说明,

  • 远程桌面无法复制粘贴?操作解决!

  • 表格为何复制粘贴失效?揭秘背后原因!

  • 相关文章

  • 踏上为期一年的软件工程之旅:从 C 到 Python、JavaScript、Node.js、DevOps 等-C

  • 《王者荣耀》元流之子上线时间介绍-手机游戏策略

  • “最强祖师”升级专业技能道具介绍-手机游戏策略

  • 最强祖师后勤弟子招募策略-手机游戏策略

  • 南宫婉最强祖师的技能强度和玩法策略-手机游戏策略

  • “绝区零”体力使用策略-手机游戏策略

  • 阴阳师禅心云外镜新皮肤获取策略-手机游戏策略

  • 如何抗腐蚀不朽之旅 《不朽之旅》腐化装备保障机制介绍-手机游戏策略

  • 《地下城与勇士:起源》女鬼剑上线时间详解-手机游戏策略

  • 《绝区零》加好友的具体步骤-手机游戏策略

  • 《未定事件簿》四周年福利活动介绍-手机游戏策略

  • 妄想山海异兽角获取方法介绍-手游策略