数据溢出的二进制原理

news2024/12/23 7:35:31

char 类型的数据占一个字节,一个字节有 8 位,最高位为符号位,1表示负数,0表示正数。在计算机中,数据用补码表示,正数的补码是它本身,负数的补码为 “符号位不变,其他位取反后再加1”。
0000 0011 表示 3。
0000 1011 表示 11。

-9 如何用机器码表示?
第一步先把 9 转换成二进制:1001;
第二步加上符号位,以存储到 char 类型的数据中为例,共有 8 位,最高位为符号位:1000 1001
第三步符号位不变,其他位取反:1111 0110
第四步加 1 :1111 0111
最终,-9 的机器码为 1111 0111

char 类型的数据存储的机器码范围为0000 00001111 1111
其中 0000 00000111 1111 表示正数范围 0 到 127;
1000 00001111 1111 表示负数范围 -128 到 -1。

-127 的机器码为 1000 0001 (127 的二进制为 111 1111,最高位加上符号位 1111 1111,符号位不变其他位再取反 1000 0000,最后再加一得到机器码 1000 0001)。
-128 的机器码就是 -127 机器码减一:1000 0000

数据溢出

当数据的大小超出或小于数据的存储范围后,就会产生不符合常理的结果,称之为数据溢出。

char 类型的数据存储范围为 -128 ~ 127,赋值或运算后超出这个范围,就会产生数据溢出。

在这里插入图片描述
127加1后理应是128,输出结果却为-128,如果从二进制的角度考虑,就没有什么疑问可言了:127的二进制为 0111 1111,加1后 1000 0000 就是 -128 的机器码。

unsigned char 无符号char数据类型,没有最高位符号位,数据存储范围为 0 ~ 255。
在这里插入图片描述
255 二进制为 1111 1111,加一后进位舍去变为 0000 0000

在这里插入图片描述


其他数据类型(如 int 型)也是同样的道理,只不过位数更多,存储范围更大而已。

数据溢出等基础性问题都是面试官喜欢考的基础题。

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

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

相关文章

Spring Cloud 系列之OpenFeign:(4)集成OpenFeign

目录 传送门 服务间调用 集成OpenFeign 说明文档 添加pom依赖 启用OpenFeign 声明OpenFeign接口 改造远程调用 定义OpenFeign接口 测试OpenFeign调用 传送门 Spring Cloud Alibaba系列之nacos:(1)安装 Spring Cloud Alibaba系列之nacos:(2)单…

离散数学数理逻辑部分【2】

文章目录命题逻辑等值演算公式的使用【重点】析取范式和合取范式【重点】范式存在定义【了解】求公式A的范式的步骤:【重点】极大项和极小项【重点】主合取范式和主析取范式【重点】等式演算求主析取范式【重点】真值表求主析取范式【了解】主范式的应用【重点】推理…

Python : 使用python实现教务管理系统(GUI界面+数据库)

一、设计目的 1.熟悉Python和相关软件的操作。 2.基于本学期所学Python知识,熟练应用掌握,制作符合要求的教务管理系统。 3.会对程序运行中的错误代码进行分析,找出合理的解决方案。 4.掌握tkinter开发流程,布局方法和主要组件&a…

C语言位域

如果程序的结构中包含多个开关量,只有 TRUE/FALSE 变量,如下: struct {unsigned int widthValidated;unsigned int heightValidated; } status; 这种结构需要 8 字节的内存空间,但在实际上,在每个变量中,…

JavaScript游戏开发(4)(笔记)

文章目录八、角色动作状态的管理8.1 准备部分8.2 角色状态改变的基本方式8.3 完善整个代码8.4 存在的问题九、简单的横板动作卷轴游戏9.1 准备部分9.2 输入管理器9.3 状态管理器9.4 背景管理器9.5 敌人管理器9.6 碰撞检测、UI绘制9.7 更多的角色状态与特效9.8 完善游戏附录素材…

跳槽、换房、不忘输出,与你分享我匆忙的 2022~

前些日子下班回家的瞬间,忽然想起去年春节还在跟老爸吐露职场的困境和对房子的无奈。哪曾想过了不到半年的时间竟全部解决,令我不禁感叹人生的捉摸不透。 让我姑且花点文字记录下,与你分享我这一年的匆匆忙忙~ 目录前瞻&#xf…

Listener监听器 | 监听域对象创建和销毁、使用监听器统计网站在线人数

目录 一:监听域对象创建和销毁 1、什么是监听器?监听器有什么用? 2、Servlet规范中提供了哪些监听器? 3、实现一个监听器的步骤 4、HttpSessionBindingListener 5、HttpSessionIdListener & HttpSessionActivationList…

【编译原理】实验二:NFA到DFA

目录 实验二 NFA 到 DFA 一、实验目的 二、预备知识 三、实验内容 NFA向DFA的转换的思路 NFA和DFA之间的联系 NFAToDFA.h 文件 main.c 文件 RegexpToPost.c 文件 PostToNFA.c 文件 NFAFragmentStack.c 文件 PostToNFA.h 文件 NFAFragmentStack.h 文件 NFAStateStack.h 文件 dem…

【C++】使用yaml-cpp操作yaml文件

目录 1 安装yaml-cpp 2 工程结构 (1)test.yaml的内容 (2)CmakeLists.txt (3)代码 3 运行结果 4 报错处理 1 安装yaml-cpp (1)cd 到yaml-cpp下载的目的路径 例如:…

spring之反射机制之Spring-DI核心实现

文章目录前言一、回顾反射机制之反射调用方法1、编写一个方法类SomeService2、通过反射机制调用SomeService类中的方法二、反射机制之Spring-DI核心实现前言 调用一个方法当中含有几个要素? 1、调用哪个对象 2、调用哪个方法 3、调用方法的时候传什么参数 4、方法执…

一文弄懂 React ref

前言 对于 Ref 理解与使用,一些读者可能还停留在用 ref 获取真实 DOM 元素和获取类组件实例层面上 其实 ref 除了这两项常用功能之外,还有很多别的小技巧 通过本篇文章的学习,你将收获 React ref 的基本和进阶用法,并且能够明白…

LeetCode HOT 100 —— 621. 任务调度器

题目 给你一个用字符数组 tasks 表示的 CPU 需要执行的任务列表。其中每个字母表示一种不同种类的任务。任务可以以任意顺序执行,并且每个任务都可以在 1 个单位时间内执行完。在任何一个单位时间,CPU 可以完成一个任务,或者处于待命状态。 然…

使用 SwiftUI 布局协议构建六边形网格,如何制作在六边形网格中显示子视图的通用 SwiftUI 容器

我们将要制作的组件可以作为Swift 包使用。 SwiftUI 非常擅长构建矩形框架的层次结构。随着最近的加入,Grid它变得更好了。然而,今天我们要构建一个疯狂的六边形布局。当然,没有专门的布局类型。所以我们用协议建立我们自己的Layout! 绘制一个六边形 让我们首先为我们的…

在linux中配置redis去中心化集群

目录 前情回顾 一、集群配置 二、启动redis集群 三、检验是否成功 成功! 前情回顾 linux中配置redis主从复制及开启哨兵模式 一、集群配置 查看所有的redis服务进程 ps -ef | grep redis 关闭所有的redis服务(6379,6380,6381) kill -9 99168 kill …

第十章:数据库恢复技术

1、【多选题】下列哪些属于事务的特征: 正确答案: AD 2、【多选题】下列关于故障恢复的说法正确的是: 正确答案: BC 3、【多选题】下列说法错误的是: 正确答案: AB

无线通信网络优化的自动路测系统设计(Matlab代码实现)

目录 💥1 概述 📚2 运行结果 🎉3 参考文献 👨‍💻4 Matlab代码 💥1 概述 无线通信网络是一个动态的网络,无线网络优化是一项贯穿于整个网络发展全过程的长期工程。在网络建成投入运营以后,…

学习笔记 - Word、WPS分别设置背景色

学习笔记 - Word、WPS分别设置背景色前言实现原理实现步骤模拟背景色1. 插入矩形形状2. 调整矩形:位置、文字环绕、大小。3. 调整颜色实现按节分别设置1. 插入分节符2. 取消“同前节”3. 矩形入进页眉建议场景参考资料前言 Word、WPS 都没有自带此功能。只能统一设…

node.js+uni计算机毕设项目基于微信小程序的校园快递代取平台(程序+小程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程。欢迎交流 项目运行 环境配置: Node.js Vscode Mysql5.7 HBuilderXNavicat11VueExpress。 项目技术: Express框架 Node.js Vue 等等组成,B/S模式 Vscode管理前后端分离等…

第十一章:并发控制

1、【多选题】二级封锁协议能够避免数据库哪些一致性问题 正确答案: AB 2、【多选题】下列说法正确的是: 正确答案: ABC 3、【多选题】下列哪些是解决死锁的方法: 正确答案: ABC

node.js+uni计算机毕设项目互联网教育系统小程序(程序+小程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程。欢迎交流 项目运行 环境配置: Node.js Vscode Mysql5.7 HBuilderXNavicat11VueExpress。 项目技术: Express框架 Node.js Vue 等等组成,B/S模式 Vscode管理前后端分离等…