原码,反码,补码,移码的表示范围以及数据溢出

计算机组成原理——原码、反码、补码的表示范围 原码、反码、补码的表示范围是如何得到的原码纯整数的原码纯小数的原码反码纯整数的反码纯小数的反码补码纯整数的补码纯小数的补码 原码 首先说原码,原码是有符号数中最简单的编码方式。原码表示法在数值前面增加了一位符号位(即最高位为符号位):0表示为正数,1表示为负数,其余为数值位,表示数值大小。 纯整数的原码 原码的范围是 – (2n–1) ≤ x ≤ 2n–1(n是整数位数) 这是如何得到的呢? 以机... 阅读详情
AI摘要

本文介绍了二进制表示法中的原码、反码、补码和移码在不同位宽下的范围,并详细解释了数据溢出时的处理方法,通过例题解析了如何在实际计算中应用这些概念。

1.表示范围:

假设二进制机器字长是n+1位,且为整数(因为有一位是符号位,这样表示更好理解)

原码表示的范围: −(2^{n}-1)≤  x  ≤2^{n}-1

反码表示的范围: −(2^{n}-1)≤  x  ≤2^{n}-1

补码表示的范围:      −2^{n}≤  x  ≤2^{n}-1

移码表示的范围:      −2^{n}≤  x  ≤2^{n}-1

移码的符号位中0表示负数,1表示正数,简单来说,原码的补码数值位不变,符号位取反就是移码。
对于8位寄存器:
原码表示范围为 -127-127,即1111 1111~0111 1111
反码表示范围为 -127-127,即1000 0000~0111 1111
补码表示范围为 -128-127,即1000 0000~0111 1111
移码表示范围为 -128-127,即0000 0000~1111 1111

2.数据溢出:

数据溢出原理:数据范围的表示是一个环状结构,如果数据增长到最大值,则数据从最小值方向开始依次递增,如果数据减到最小值,则数据从最大值方向开始依次递减。

方法总结:

①
如果超过该范围的最大值,正值,那么使用该数值减去2^{n}  (n是多少bit 1字节=8bit 2字节=16bit),例如200,超过了127,则200-2^{8}=-56 在该区间内,输出-56
例如500,超过了127,则500-256=244,不在该区间,继续减去256,244-256=-12,在该区间内,输出-12
②
如果超过该范围的最小值,负值,那么使用该数值加上2^{n} (n是多少bit 1字节=8bit 2字节=16bit),例如-200,超过了最小值,则-200+2^{8}=56 在该区间内,输出56
例如-600,超过了-127,则-600+256=-344,不在该区间,继续+256,-344+256=-88,在该区间内,输出-88

3.例题分析:

例题1(期末考试题): 
若寄存器内容为00000000,若它等于-128,则为(   C )
A. 原码
B. 补码
C. 移码
D. 反码
解题:
符号位为0,所以ABD即原码、反码、补码为正数,正数的原码、反码、补码相同,转换为十进制为0;
移码的符号位中0表示负数,00000000即为-128,由于-128超出8位寄存器原码和反码的范围,所以计算-128的时候不能使用符号位不变数值位取反加一,需要特殊记。

例题2(某公司笔试题):
下列代码的运行结果(B)
short i = 65537;
int j = i + 1;
printf(“i = % d, j = % d\n”, i, j);
A i=65537,j=65538
B i=1,j=2.
C i=-1,j=0
D i=1,j=65538
解题:
short为16位,表示范围为(补码):−2^{15}≤  x  ≤2^{15}-1
int为32位,表示范围为(补码):−2^{31}≤  x  ≤2^{31}-1
i = 65537,超出最大表示范围,使用上述我讲的方法计算,则 65537-2^{16}=1;
根据程序自上而下执行,i = 1,  j = i + 1 = 2,所以选B。


例题3(期末考试题):
设机器数采用补码表示(含1位符号位),若寄存器内容为9BH,则对应的十进制数为(   D )
A. -97
B. -101
C. -27
D. 155
解题:
方法一:9BH转化为十进制为155,因为8位寄存器补码表示范围为 -128-127,溢出,使用上述我讲的方法计算,则155 - 2^{8} = -101;
方法二:9BH转化为二进制为10011011,补码10011011转为原码为11100101,转换为十进制为-101;

4.总结感悟:

这篇文章是我在一次面试后写的,当时面试官问我关于原码,反码,补码,移码的认知,我直接就懵了,面试居然还会问这种问题,我就给面试官简单讲了一下原码,反码,补码,移码的含义和转换,显然面试官不是想听我给他讲定义和转换的,然后面试官下一个问题就是关于数据溢出的,后面又深度的问了我很多关于数据溢出的问题,以及发生数据溢出的解决方案(当时面试官给我描述了一个数据溢出的场景),让我现场敲代码给出解决方案,我当时的做法是换了一个更大的数据储存类型,还加了边界检查以及异常抛出,后面又从数据溢出引出关于内存管理的很多问题,都是给我一个场景,让我现场手撕代码给出解决方案,不过还好,都是一些基础,有一定的代码量和知识储备没有太大问题。

最后给大家一个建议,不管平时学习还是办公,对于一个知识领域,一定要深度学习其底层的原理,不要只停留在表层,仅仅会用是完全不够的。

如果觉得我的这篇文章对你有帮助,请点赞收藏加关注,谢谢大家。

计算机内存数值存储方式-原码、反码、补码、数值溢出 原码表示法简单易懂,与带符号数本身转换方便,只要符号还原即可,但当两个正数相减或不同符号数相加时,必须比较两个数哪个绝对值大,才能决定谁减谁,才能确定结果是正还是负,所以原码不便于加减运算。不管以原码方式存储,还是以反码方式存储,0也有两种表示形式。②对于负数,符号位不变,其它部分取反(1变0,0变1)③补码符号位不动,其他位求反,最后整个数加1,得到原码。最高位的1溢出,剩余8位二进制表示的是3,正确。③负数的原码是在其绝对值的基础上,最高位变为1。①最高位做为符号位,0表示正,为1表示负。 阅读详情

相关推荐

原码、反码、补码、移码区别与应用

文章目录一、Java中的基本数据类型关注点1:基本类型默认值0关注点2:开发的时候注意数据溢出问题关注点3:不同类型不能自动拆装箱关注点4:MySQL int的取值范围(先记在这,哈哈)二、浮点类型关注点1:原码、反码、补码、移码关注点2:浮点数的表示关注点3:定点数表示金额 一、Java中的基本数据类型 Java中共有8种数据类型,分为三大类。 字符型:char 布尔型:boolean 数值型:...

Awecoder的博客 2190

原码,反码,补码的基本概念及其范围

在这个图上,可以很明显地看出三者之间的关系 原码、补码、反码三者的正数部分都是一样的原码八位中,除去符号位,后面的部分对应相等。反码在负数这一部分,就是将原码负数部分,除符号位外,按位取反 由于-0和+0的存在,会影响正常的加减法操作,所以将二者合二为一。再将反码负数部分每个数都加1,就得到了补码。计算机中数值计算都是以补码形式进行的,它有效解决了负数加法的问题。假设有效部分是n位,机器字长是n+1位 表示的范围是一样的,因为真值最小是一样的,就是当n是整数时,真值负数最小时,原码是1111 1111,反

cool-wangtongzhou 3万+

编码与溢出判断 组合逻辑电路

带符号数的编码 如何判断溢出 一.判断溢出的两种方法: 1.利用运算时符号位的进位和数值最高位的进位进行比较,若进位相同则没有溢出,否则,溢出 2.采用双符号位判断溢出,若双符号位(00/11)则没有溢出,若01,则负溢出,若10则正溢出 二.计算机是如何实现判断进位是否相同的? 采用“异或门”进行实现,Cf^C=0, 则未溢出,Cf^C=1,则溢出(其中Cf/Cn代表符号位的进位,C/Cn-1代表数值最高位的进位) 知识补充:异或运算——1^1=0 0^0=0 1^0 =1 0...

m0_51787573的博客 2693

原码、反码和补码

8位编码范围表汇总 1、原码 源码的范围:-127 ~ +127,最高位是符号位,0表示正数,1表示负数 [+127]原 = 0 1111111 [-127]原 = 1 1111111 数值“0”由两种原码表示形式: [+0]原 = 0 0000000 [-0]原 = 1 0000000 2、反码 源码的范围:-127 ~ +127,最高位是符号位,0表示正数,1表示负数 [+127]反 = 0 1111111 [-127]反 = 1 0000000 数值“0”由两种反码表示形式: [+0]反 = 0

lluojian的博客 6647

5.1.6_移码

计算机组成原理之移码

人生得意须尽欢 7667

软件设计师真题,计算机系统专项练习(三)

专题配套视频解析如下。

1万+

移码总结

转载文章 原文:https://blog.youkuaiyun.com/u011240016/article/details/53010061 移码的再总结 @(组成原理) 在总结原码,反码,补码的表示范围时,忽略了对移码的总结,现在看移码本身的表示范围与IEEE754使用的特殊阶码,有点迷惑,思考后才明白,这其中的关节。 首先我们明白移码与补码有相同的表达能力。也就是说,给定相同的机器字长,它们的表达范围相...

qq_40940540的博客 2万+

Spring Boot 构建war 部署到tomcat下无法在Nacos中注册服务

因此,当使用外部容器时,如此处的 Tomcat 来部署项目,AbstractAutoServiceRegistration 就不能监听到容器启动事件了,也就不会尝试向服务注册中心注册当前这个微服务,那么注册就失败了,并且也就没有异常信息了。自定义获取获取外部容器端口的方法, 然后监听应用启动事件,当应用被启动时,获取外部容器启动的端口号,然后将这个 port 设置到 NacosAutoServiceReigistration 中。在启动类同级目录,复制下面代码即可(不需要修改,直接构建war即可)

ttyy1112的专栏 2519

数的机器码表示:原码、反码、补码、变形补码、移码和浮点数编码

我们平时书写的数据如+110、-111称为数的真值,而数在经过特定的方式编码后在计算机中的表示称为数的机器码。为满足计算机中不同操作的要求,对于一个数常见的编码方式有如下几种。 1.原码 (1) 整数的原码表示 从直观上看,整数的原码相对于真值而言就是在数值前添加一位符号位来替代真值中的数值符号,符号位为0表示正数,符号位为1表示负数。 数学定义: 例:+111的原码为0111,-101的原码为1101 (2) 纯小数的原码表示 纯小数的原码首位同样为符号位,后面的数值则表示小数的尾数,纯小数的整数位为默认

m0_56602092的博客 2万+

初级文章【西门子】字符拼接成字符串

针对S7-400极其以下PLC,1200往上据说有专门的块了呢,首先,我是不用库的,需要什么函数会自己写,OK进入正题。 首先,我们有一个DB块,里面有14个char,一个14位的char数组和一个14位的string。如下图。 我们的目的是将char1-char10拼接成一个string。 第一种方式:第一步,将char放进数组。 ​​​​​​​ 相信大家都能看明白,但是我还是要解释解释 L取值2 T赋值到临时变量DBNO(INT) OPN DB [#DBNO]获取DB块,这一句.

NS_Speak(IVAV) 1万+

【MIMIC数据库教程】一、MIMIC-IV3.1表格与字段详解(一):Hosp和ICU模块表格整体介绍

MIMIC-IV 3.1 版本包含住院 (hosp) 和 重症监护 (ICU)提供全院电子病历数据,包括入院信息、实验室测量、微生物学、用药、账单等,共计22 张表。记录重症监护室数据,如静脉注射、呼吸机设置、生命体征等,共计9 张表。

BD_Design_cs的博客 3423

【软考】中级软件设计师 一 计算机组成与体系结构 2.03 数据的表示(原码反码补码移码) 1. 数据的表示 & 2. 数值表示范围

【软考】中级软件设计师 一 计算机组成与体系结构 2.03 数据的表示(原码反码补码移码) 1. 数据的表示 & 2. 数值表示范围

代码改变世界 433

TL3562/3568内核驱动移植实战:解决无锡沐创N500L-AM4网口异常问题

本文详细介绍了在TL3562/3568平台上移植无锡沐创N500L-AM4网卡驱动的实战经验,重点解决了第四个网口通讯异常问题。通过升级驱动版本至rnpgbe-0.2.3,生成关键头文件并正确配置内核,最终实现四个网口稳定工作。文章还提供了性能优化建议和避坑指南,为类似硬件驱动移植项目提供参考。

weixin_28273593的博客 180

第1次作业练习题(第二章:数据信息的表示方法)

第1次作业练习题

狂放不羁霸的博客 2525

EWF写保护功能详解:从安装到实战操作指南

本文详细介绍了EWF写保护功能的安装与实战操作指南。EWF(Enhanced Write Filter)通过重定向写入操作保护硬盘分区,特别适合需要长期稳定运行的系统场景。文章涵盖从安装准备、图形界面操作到命令行高级管理的全流程,并提供了常见问题的解决方案,帮助用户轻松掌握这一实用工具。

weixin_28710999的博客 446

开源项目-智能算法中台管理系统

智能算法中台管理系统,系统主要有样本中心,算法中心,模型中心等模块

u010479989的博客 3001

编码与运算原理

计算机中对二进制数的编码方式常见的有原码、反码、补码、移码。 概念:1、原码:按照二进制权值进行编码。             2、反码:正数反码等于原码,负数反码为原码除去符号位各位取反。             3、补码:正数补码等于原码,负数补码 [x]补 = x + 2^n(n为二进制数的位数)             4、移码:[x]移 = x + 2^n 理解:1、原

Alex_supertramp的专栏 1578

Multisim14.0仿真应用设计(十六)74LS138译码器应用仿真

74LS138为3线-8线译码器。

zhusl6688的博客 2982

计算机组成原理

计算机组成原理第二章笔记1包含数据表示,范围,原码,反码,补码,移码,移码原理mod.移位(逻辑移位,算数移位)及溢出

m0_74389379的博客 921

STC单片机 普通 I/O 口中断功能介绍和使用

STC32单片机 普通 I/O 口中断功能介绍和使用

perseverance51博客 3048

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

计算机考研408核心考点:原码、反码、补码与移码详解及实战应用

在计算机科学中,数据的机器级表示是理解计算机如何工作的基石。原码、反码、补码和移码是计算机内部表示有符号整数的核心编码方案,其设计原理深刻影响了计算机运算器的设计与程序执行效率。补码技术因其能够统一加减法运算、消除零的歧义表示,成为现代计算机系统表示有符号整数的标准。理解这些编码方案,对于掌握计算机组成原理、进行底层程序调试与优化至关重要。本文聚焦于计算机考研408科目的高频考点,通过结构化图解与真题实战,系统梳理了从原码到补码的转换规则、表示范围、加减运算及溢出判断等核心内容,旨在帮助考生高效攻克这一基础

weixin_34133829的博客 487

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

计算机考研408必备:原码、反码、补码一图流笔记与真题精解

在计算机组成原理中,数据的机器级表示是理解计算机如何运算的基石。原码、反码和补码是三种核心的有符号整数表示方法,其设计原理旨在解决计算机中减法运算的复杂性。补码通过巧妙的编码规则,成功地将减法统一为加法,极大地简化了算术逻辑单元(ALU)的硬件设计,提升了运算效率。这一技术广泛应用于CPU的整数运算、定点数处理以及浮点数阶码的表示中。对于备战计算机考研408的考生而言,清晰掌握这三种码制的定义、相互转换规则以及补码的加减法运算与溢出判断,是应对相关真题(如2025年计算机408第43题)的关键。本文通过一张

weixin_30606461的博客 322

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

计算机硬件基础——第二章:计算机运算基础

第二章:计算机运算基础 带符号数的编码 二进制数表示,用固定长度的二进制数表达,一般长度是字节的整数倍 机器数和真值 能被计算机识别的数成为机器数 机器数所代表的真实值为机器数的真值 无符号数的机器数和真值表示方法相同 有符号数的机器数和真值表示方式不同 原码 符号位:0 --> + | 1 --> - 数值位:有符号数的绝对值对应的二进制数 范围: -(2(n-1)-1)~+(2(n-1)-1) -127~+127 -32767~+32767 0 = 000000

m0_53793974的博客 312

计算机中的数据表示:原理、方法与应用

比如单精度浮点数,字长32位,尾数长度23位,符号位1位,指数长度8位,指数偏移量为127。在将十进制数转换为单精度浮点数时,如将 176.0625 转换,先将其转为二进制 (10110000.0001)_2 ,再进行规格化处理为 (1.01100000001×2^{7} ) ,然后根据规则确定指数的移码和尾数,最终得到其单精度浮点数表示形式。机器数采用二进制计数制,用0表示数的正号,1表示负号,小数点则隐含,不占据实际的存储位置,与之对应的实际数值被称为数的真值。移码常用于表示浮点数中的阶码。

2301_82006865的博客 629

计算机信息表示

前言:计算机内部流动的信息分为两大类:数据信息和控制信息。

ZX_2913的博客 285

计算机组成原理核心:数据表示与运算全解析——补码、浮点数与溢出一次讲透

从进制转换到机器数表示,是理解计算机硬件如何存储与计算的第一步。二进制之所以成为计算机的基石,源于电子器件的物理特性;而原码、反码、补码、移码的设计逻辑,则深刻揭示了硬件如何用加法电路统一处理加减运算。补码加减法、溢出判断和标志位机制,构成了ALU运算部件的核心逻辑。在此基础上,IEEE 754浮点数标准通过阶码与尾数的巧妙布局,解决了定点数范围受限的问题,却也因此带来精度丢失的经典陷阱。这些基础概念不仅是计算机组成原理课程的重点,更是后续学习指令流水线、运算器设计以及排查底层bug的前提。本文系统梳理数据

weixin_30357231的博客 219
上一篇: 最大公约数和最小公倍数
下一篇: 面试手搓单例模式C++
CodeCheers
博客等级 码龄5年 154粉丝 15原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值