计算机基础|数据溢出

news2024/11/16 1:43:54

一、概念

在类似C这样的非高级语言存在数值溢出问题,简单概括:高位数据丢失被低位数据占据位置。

二、举例

2.1 以C语言 for循环为例

	/*int8_t value range from -128 to 127*/
	int8_t input;
	for (input = 124; input < 130; input++) {
		printf("%d\n",input);
	}

测试数据类型:int8_t  取值范围【-128,127】

对应的十进制127+1之后会怎样?

没错,对应的十进制超过127+1 变成了-128

对应的二进制111 11111 +1= 1000 0000


继续累加直到十进制变成-1

二进制变成1111 1111


继续+1会怎样?

没错变成零了。至此这个for循环变成了一个死循环~这就是数值溢出的危害!

2.2 原因分析

问题1:int8_t 十进制127+1 为何变成-128?

我们用到的int8_t是一个有符号类型的整数 最高位表示符号位(0表示正数、1表示负数);

从二进制角度分析111 11111 +1= 1000 0000 ,此刻数值位侵占了最高位符号位(最高位1既表示符号为负,也表示数值)

计算机中数据存储格式是以补码形式存在的,正数的原码、反码、补码均一致;

而负数的原码则需要转换一下,负数的补码转换成原码 :需要取反再加1。

1000 0000转换成原码

取反:0111 1111

加1:1000 0000 

对应十进制为128

在加上符号位-

对应的十进制数值即为-128

同理 我们看到的1111 1111 也是负数补码形式 取反:0000 0000,加1:0000 0001,最后记得加符号,对应十进制为-1

问题2:二进制变成1111 1111 在加1为何变成0?

int8_t 只给我们提供了8位 ,1111 1111 +1 = 1 0000 0000,最高位的1没有空间存储丢失了!

所以显示是0.

三、如何应对数值溢出

注意各个数值的使用范围。


关注我的公众号(桂圆学AI)分享有用的AI工具

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2038509.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《Unity3D网络游戏实战》深入了解TCP

从TCP到铜线 应用层 应用层功能是应用程序&#xff08;游戏程序&#xff09;提供的功能。在给客户端发送“hello”的例子中&#xff0c;程序把“hello”转化成二进制流传递给传输层&#xff08;传送给send方&#xff09;​。操作系统会对二进制数据做一系列加工&#xff0c;使…

嵌入式八股文-网络编程、多线程和进程

网络编程 1. TCP头部结构 TCP固定头部结构 每个TCP报文段都包含着此报文段的TCP头部信息,用于指定源端端口、目的端端口以及管理TCP连接等。完整的TCP头部结构可分为固定头部结构和头部选项两个部分。 32位端口号:包括了16位源端口号和16位目的端口号。32位序号:假设第一次…

Linux驱动开发基础(Hello驱动)

所学内容来自百问网 目录 1. 文件在内核中的表示 2. 打开字符设备节点时&#xff0c;内核中也有对应的struct file 3. 编写驱动程序步骤 4. 相关知识点 4.1 涉及函数解析 4.2 module_init/module_exit的实现 4.3 register_chrdev的内部实现 4.4 class_destroy/device_…

(Jmeter、Fiddler)脚本转换Loadrunner脚本

背景:公司政治任务、各种体系文档要留档,但有些不在体系内的工具生成的脚本需要转化到体系内以备留档。 一、Loadrunner代理设置 开始录制配置: Record->Remote Application via LoadRunner Proxy LoadRrunner Proxy listens on port-> 8889 (系统建立出入站规则…

解析防蠕动交叉导轨的防蠕动机制

随着工业自动化的不断发展&#xff0c;对机械导轨系统的精度和稳定性要求越来越高。防蠕动交叉导轨作为一种新型导轨系统&#xff0c;能够有效提高设备的运行精度和稳定性&#xff0c;降低维护成本。 蠕动现象通常发生在导轨负载超出其额定范围、表面粗糙度不足或润滑不良等情况…

Python 实现 Excel 文件操作的技术性详解

目录 一、引言 二、Excel 文件格式及库的选择 2.1 Excel 文件格式 2.2 库的选择 三、安装必要的库 四、使用 openpyxl 读取 Excel 文件 4.1 基本步骤 4.2 实战案例 五、使用 pandas 读取 Excel 文件 5.1 基本步骤 5.2 实战案例 六、写入 Excel 文件 6.1 使用 …

【每日刷题】Day100

【每日刷题】Day100 &#x1f955;个人主页&#xff1a;开敲&#x1f349; &#x1f525;所属专栏&#xff1a;每日刷题&#x1f34d; &#x1f33c;文章目录&#x1f33c; 1. 【模板】堆_牛客题霸_牛客网 (nowcoder.com) 2. 【模板】链表_牛客题霸_牛客网 (nowcoder.com) 3…

Linux系统移植——开发板烧写

目录&#xff1a; 目录&#xff1a; 一、什么是EMMC分区&#xff1f; 1.1 eMMC分区 1.2 分区的管理 二、相关命令介绍&#xff1a; 2.1 mmc 2.1.1 主要功能 2.1.2 示例用法 2.2 fdisk 2.2.1 基本功能 2.2.2 交互模式常用命令 2.2.3 注意事项 三、U-BOOT烧写 3.1 mmc命令 3.2 f…

24小时监控识别潜在的非安全生产隐患的明厨亮灶开源了。

明厨亮灶视频监控平台是一款功能强大且简单易用的实时算法视频监控系统。它的愿景是最底层打通各大芯片厂商相互间的壁垒&#xff0c;省去繁琐重复的适配流程&#xff0c;实现芯片、算法、应用的全流程组合&#xff0c;从而大大减少企业级应用约95%的开发成本。AI技术可以24小时…

【JS】旋涡数组

前言 实现如下图的旋涡数组&#xff0c;简单理解为遇到拐点自动拐弯&#xff0c;否则一直沿当前方向推进。 封装一个函数接收两个参数分别为行数以及列数&#xff0c;实现该旋涡数组。 思路 二维数组&#xff0c;初始填充0分别记录水平和垂直方向的坐标&#xff0c;并根据步…

学习记录702@计算机组成原理之计算机硬件组成细化

运算器 ACC是累加器ALU是逻辑和算数运算单元MQ是乘商寄存器 X是操作数寄存器各部分存储的值 控制器 PC是程序计数器&#xff0c;用来存放下一条应该执行程序的地址&#xff0c;与MAR地址寄存器相连&#xff0c;找到下一个要执行的程序的地址。IR指令寄存器&#xff0c;用来…

怎么利用XML发送视频彩信

传统的短信推广主要以文字为主&#xff0c;用户接收到的信息往往显得单调乏味。而视频彩信则不同&#xff0c;它结合了视频和音频的优势&#xff0c;通过生动的画面和悦耳的音乐&#xff0c;给用户带来强烈的视听冲击&#xff0c;从而极大地提高了用户的吸引力。 XML成功返回示…

某通电子文档安全管理系统 CDGAuthoriseTempletService1接口SQL注入漏洞复现 [附POC]

文章目录 某通电子文档安全管理系统 CDGAuthoriseTempletService1接口SQL注入漏洞复现 [附POC]0x01 前言0x02 漏洞描述0x03 影响版本0x04 漏洞环境0x05 漏洞复现1.访问漏洞环境2.构造POC3.复现0x06 修复建议某通电子文档安全管理系统 CDGAuthoriseTempletService1接口SQL注入漏…

聚鼎科技:现在开一家装饰画店铺究竟受欢迎吗

在这个时代&#xff0c;装饰画不仅仅是墙上的一抹色彩&#xff0c;它已经成为人们情感寄托、审美追求的象征。那么&#xff0c;现在开一家装饰画店铺究竟受欢迎吗? “家&#xff0c;是一幅画。”这句话道出了现代人对于家的期待与向往。在这个快节奏的时代&#xff0c;人们渴望…

8.13 哈希表中等 128 Longest Consecutive Sequence 138 Copy List with Random Pointer

128 Longest Consecutive Sequence class Solution { public:int longestConsecutive(vector<int>& nums) {//无序array整数数组&#xff0c;返回最长的连续的序列长度&#xff0c;首先这些数不按顺序//时间复杂度O(n)//使用哈希表&#xff0c;先存后遍历---->no …

web页面的性能测试

背景 测试大模型主要web页面的性能 使用工具 通过google自带的lighthouse测试页面的性能 各个参考指标 First Contentful Paint(FCP):测量在用户导航到页面后浏览器呈现第一段 DOM 内容所花费的时间。页面上的图像、非白色<canvas>元素和 SVG 被视为 DOM 内容&#…

C++STL之string类:基本使用及模拟实现

目录 一&#xff0c;前言 为什么要学习string类 C语言中的字符串 C中的字符串 STL(Standard Template Library) 里面的 string 类 二&#xff0c;string类的基本使用 文档的阅读 常见接口的基本使用 1&#xff0c;构造函数(constructor) 2&#xff0c;拷贝构造(copy …

程序员喜欢的7个免费公共API

本文将介绍七个程序员们喜爱的免费公共API&#xff0c;它们覆盖了从天气信息、翻译到数据分析、游戏等多个领域。这些API不仅易于使用&#xff0c;而且功能全面&#xff0c;能够帮助开发者快速实现项目需求&#xff0c;无论是个人学习、小项目开发还是商业应用&#xff0c;都能…

诸葛io孔淼:聚焦区域性银行,新一代自主可控的埋点分析平台

近日&#xff0c;由金科创新社主办的2024金融科技创新发展论坛顺利召开&#xff0c;诸葛智能创始人孔淼受邀出席并发表演讲&#xff0c;他表示&#xff0c;区域性银行需要构建新一代的数智化营销体系&#xff0c;驱动营销效率与经营效能增长。 孔淼指出&#xff0c;中小银行应…

Flink UDF注意幂等性,防止重复调用时出问题

编写Flink UDF 要注意幂等性&#xff0c;尤其不能直接修改入参&#xff01;理论上是一条数据只会执行一次UDF&#xff0c;但是实际执行过程中可能会对一条数据执行多次UDF&#xff0c;引起意想不到的问题。 例如有如下SQL&#xff1a; CREATE VIEW tmp_view AS SELECT a.…