补码、原码、反码

原码、反码、补码 原码:简单但有两个零。反码:解决了一部分问题,但仍有两个零。补码:最常用、最有效,只有一个零,简化了计算机的加减法运算。计算机内部广泛使用补码表示有符号整数,因为它简化了硬件设计和运算处理。了解这些概念有助于理解计算机的底层运算机制和一些算法的实现原理。 阅读详情

原码、反码、补码

原码:
将最高位作为符号位(以0代表正,1代表负),其余各位代表数值本身的绝对值(以二进制表示)。
为了简单起见,我们用1个字节来表示一个整数。
     +7的原码为: 00000111
     -7的原码为: 10000111
问题:
     +0的原码为:00000000
     -0的原码为: 10000000
反码:
一个数如果为正,则它的反码与原码相同;一个数如果为负,则符号位为1,其余各位是对原码取反。
为了简单起见,我们用1个字节来表示一个整数:
     +7的反码为:00000111
     -7的反码为: 11111000
问题:
     +0的反码为:00000000
     -0的反码为:11111111
补码:
利用溢出,我们可以将减法变成加法。
对于十进制数,如果从9得到结果5,可以用减法: 9-4=5
因为4+6=10,我们将6作为4的补数,将上式的减法改写为加法:9+6=15
去掉高位1(也就是减去10),得到结果5.


对于16进制数,如果从C得到结果5,可以用减法: C-7=5
因为7+9=16,我们将9作为7的补数,将上式的减法改写为加法:C+9=15
去掉高位1(也就是减去16),得到结果5.

补码:一个数如果为正,则它的原码、反码、补码相同;一个数如果为负,则符号位为1,其余各位是对原码取反,然后整个数加1。为了简单起见,我们用1个字节来表示一个整数:
+7的补码为: 00000111
-7的补码为: 第一步:11111000,第二步+1=11111001
问题:0的补码表示:
+0的补码: 00000000
-0的补码:第一步:11111111 第二步+1= 1 00000000 第三部:进位1被丢弃
     已知一个负数的补码,将其转换为十进制数,步骤:
      1、先对各位取反;
      2、将其转换为十进制数;
      3、加上负号,再减去1。
      例如:
      11111010,最高位为1,是负数,先对各位取反得00000101,转换为十进制数得5,加上负号得-5,再减1得-6。

学习计算机科学的学生会问:为什么补码能这么巧妙实现了正负数的加减运算?答案是:指定n比特字长,那么就只有2n个可能的值,加减法运算都存在上溢出与下溢出的情况,实际上都等价于模2n的加减法运算。这对于n比特无符号整数类型或是n比特有符号整数类型都同样适用。

例如,8位无符号整数的值的范围是0到255. 因此4+254将上溢出,结果是2,即(4+254) \equiv 258 \equiv 2 \pmod{256}。

例如,8位有符号整数的值的范围,如果规定为−128到127, 则126+125将上溢出,结果是−5,即(126+125) \equiv 251 \equiv -5 \pmod{256}。

对于8位字长的有符号整数类型,以28即256为模,则

\begin{align}-128 & \equiv 128 \pmod{256} \\-127 & \equiv 129 \pmod{256} \\\vdots \\-2 & \equiv 254 \pmod{256} \\-1 & \equiv 255 \pmod{256} \\\end{align}

所以模256下的加减法,用0, 1, 2, …, 254,255表示其值,或者用−128, −127,… , −1, 0, 1, 2,… ,127是完全等价的。−128与128,−127与129,…,−2与254,−1与255可以互换而加减法的结果不变。从而,把8位(octet)的高半部分(即二进制的1000 0000到1111 1111)解释为−128到−1,同样也实现了模256的加减法,而且所需要的CPU加法运算器的电路实现与8位无符号整数并无不同。

实际上对于8比特的存储单元,把它的取值[00000000, …, 11111111]解释为[0, 255], 或者[-1, 254], 或者[-2, 253], 或者[-128, 127], 或者[-200, 55], 甚至或者[500, 755], 对于加法硬件实现并无不同。

原码反码补码的概念,以及原码反码的表示形式 本文主要讲解计算机的原码, 反码和补码.的概念,以及原码反码的表示形式,以及原码反码补码之前如何相互转换,还有计算机中数字是怎么样存储的。 阅读详情

相关推荐

微信本地数据解密实战:从AES加密原理到EnMicroMsg.db恢复指南

数据加密是保障信息安全的核心技术,其中对称加密算法AES因其高效可靠,被广泛应用于各类本地数据保护场景。其原理是通过特定密钥对数据进行混淆转换,确保未经授权者无法读取原始内容。在移动应用领域,本地数据库加密对于保护用户隐私、防止数据泄露具有重要价值。微信作为国民级应用,对其本地存储的聊天记录数据库(EnMicroMsg.db)采用了基于设备标识和用户UIN生成的AES-256-CBC加密方案。理解这一机制,不仅有助于在合法合规前提下进行个人数据备份与恢复,也为开发者进行客户端安全分析、兼容工具开发提供了基础

weixin_30764883的博客 570

原码反码补码

1.原码 将最高位作为符号位(以0代表正,1代表负),其余各位代表数值本身的绝对值(以二进制表示)。为了简单起见,我们用1个字节来表示一个整数。 +7的原码为: 00000111 -7的原码为: 10000111 2.反码 一个数如果为正,则它的反码与原码相同;一个数如果为负,则符号位为1,其余各位是对原码取反。为了简单起见,我们用1个字节来表示一个整数: +7的反码...

weixin_30260399的博客 219

AXI Timer IP核使用说明

AXI Timer是提供定时技术功能的集成IP核,具有时间生成、事件捕获、产生PWM波以及产生中断的功能,下面具体讲述Timer IP核的使用说明。

weixin_43418104的博客 2488

原码,反码,补码的转换

一,原码 在用二进制数码表示一个数值时,为了区分其正负,在二进制数码前加一位符号位。用“0”表示正数,用“1”表示负数,这种带符号位的二进制数码称为原码。 例如:+12用二进制数表示为:1100。原码为:01100 ,-12的原码为:11100; 二,反码 反码为求补码时不做减法运算。正数的反码与原码相同;负数的反码:原码的基础上,符号位不变,即‘1’,其余位按位取反,即‘1’改为‘0’,‘0’改为‘1’(1010→0101)。 例如:+12原码为:01100,反码为:01...

m0_58857034的博客 8852

寻迹Arduino智能小车

Arduino巡线寻迹智能小车

Rachael_Wang的博客 9983

Maya ACES工作流程配置(Arnold 及 RedShift 贴图配置规范-还原出SP-Aces流程下贴图正确的效果) PS还原Aces流程下渲染的图

*如果使用SP,项目工程如果新建的时候设置的就是Aces的流程的话,按规范正常导出即可,贴图会带上相对应的后缀,然后贴图导入材质球的时候会根据后缀自动设置相对应的色彩空间;**万一不是,就自己手动设置一下对应的色彩空间即可;然后点击选择当前的或者选择全部导入的贴图,点击右下角后,开始转换;我复制了一下,一个默认没有LUT的效果,然后另外一个是加载2个LUT后的还原效果,和渲染的效果应该是没有区别的,至少我没有看出明显的区别;把需要转换的贴图拖拽到左侧,然后右面选择需要转换到的相对应的色彩空间;...

Yuulily 7993

大端 小端 原码 反码 补码 及内存中的表现

小端 和 大端在内存中存储时,都是从内存的低地址往高地址存,即0x00000000 -> 0xffffffff以汉字 “严”为例,Unicode码是4E25,需要两个字节存储,一个字节是0x4E,另一个字节是0x25.低字节先存(该值的起始内存位置,即从低地址单元,先存0x25),叫小端高字节先存(该值的起始内存位置,即从低地址单元,先存0x4E),叫大端另一个分辨办法,从该值的起始内存位置...

papaya的博客 1250

Android应用之【巧妙隐藏桌面图标的进阶方案】

本文详细探讨了Android应用中隐藏桌面图标的进阶方案,解决了传统方法在Android 10及以上版本中出现的黑色图标残留问题。通过Intent-Filter配置和厂商适配技巧,实现子应用真正隐身,同时确保主应用正常启动。适用于企业工具套件、模块化系统等场景,提升用户体验和安全性。

weixin_28363123的博客 505

C语言(四):原码、反码、补码

原码 将最高位做为符号位(0代表正,1代表负),其余各位代表数值本身的绝对值+7的原码是00000111 -7的原码是10000111 +0的原码是00000000 -0的原码是10000000 反码 一个数如果值为正,那么反码和原码相同 一个数如果为负,那么符号位为1,其他各位与原码相反+7的反码0000 0111 -7的反码1111 1000 -0的反码1111 1111 补

黑白的博客 931

基于非接触式微波雷达设计的睡眠监控系统_323

本项目设计了一种基于非接触式微波雷达的睡眠监控系统,通过高精度的生理信号采集与分析,帮助用户全面了解自身的睡眠状态和健康状况。系统采用60GHz频段的R60ABD1毫米波雷达模块,实现对人体呼吸频率、心率、活动状态、体动幅度等参数的非接触式测量;结合MLX90614红外体温传感器,能够实时监测人体体温。此外,系统通过蜂鸣器报警和数据上云功能,及时向用户反馈异常生理指标,确保健康风险早期预警。数据通过ESP8266-WIFI模块上传至华为云物联网平台,用户可通过Android手机APP和Windows上位机远

499

广东省低应变题库

11.按《建筑地基基础检测规范》DBJ/T15-60-2019的规定,采用低应变法对混凝土预制桩进行检测时,地基基础设计等级为甲级的桩基工程抽检桩数不应少于总桩数的30%,其余桩基工程抽检桩数不应少于总桩数的20%,且不得少于10根;16.按《建筑地基基础检测规范》DBJ/T15-60-2019的规定,当对某桩的桩身完整性判定为III类时,可认为该桩不满足验收条件,不用进一步确定该桩桩身缺陷对桩身结构承载力的影响程度。2.地基基础检测所用计量器具均应在检定(校准、验证)的有效期内,性能符合相关技术要求。

ZShy001238的博客 318

原码、反码和补码

一、原码 用一个字节举例,最左边"那位"是符号位0代表正数,1代表负数,其余代表数值。用数字7和-7举例: 7的原码: 00000111 -7的原码: 10000111 二、反码 正数的反码等于原码,负数的原码符号位为1,其余各位与原码取反 7的反码: 00000111 -7的反码: 11111000 三、补码 正数的补码等于原码和反码,负数的补码符号位为1,其余各位取反加1(相对于原码) 7...

The_climber的博客 6096

数据本体论如何指导数仓建模?

数据本体论指导数仓建模的核心在于构建业务语义与数据结构的桥梁。该方法从业务域中抽象标准化知识体系,包含核心概念、属性、关系和规则五大要素,并将其映射为分层数仓模型。通过"业务本体梳理→本体建模→模型映射→治理迭代"的流程,实现数仓从"结构存储"到"语义载体"的升级。相比传统建模,该方法能解决语义不一致、跨域融合难等问题,使数仓具备更好的可扩展性和业务对齐性。实践表明,以数据本体论为指导的数仓建模能显著提升数据资产的可理解性和复用价值。

石榴姐yyds 395

原码, 反码, 补码 详解

原码, 反码, 补码 详解 本篇文章讲解了计算机的原码, 反码和补码. 并且进行了深入探求了为何要使用反码和补码, 以及更进一步的论证了为何可以用反码, 补码的加法计算原码的减法. 论证部分如有不对的地方请各位牛人帮忙指正! 希望本文对大家学习计算机基础有所帮助! 一. 机器数和真值 在学习原码, 反码和补码之前, 需要先了解机器数和真值的概念. 1、机器数 一个数在计算机中的二进制表示形式, 叫做这个数的机器数。机器数是带符号的,在计算机用一个数的最高位存放符号, 正数为0, 负数为1. 比如,十进制中的

weixin_45839498的博客 2859

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

认识原码反码补码

原反补码

2202_75357702的博客 1732

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

原码、反码、补码的关系

在了解原码、反码和补码前需要先了解机器数和真值。 一、机器数和真值 1、机器数 一个数在计算机中的二进制表现形式称为这个数的机器数。在机器数中,一个数的最高位是符号位。例如:十进制中的 5 转为机器数就是 0000 0101,-5转为机器数就是 1000 0101。 2、真值 因为最高位是符号位,所以一个数的机器数并不能代表他的真值。例如1000 0101的最高位1代表负值,其真正的数值是-5,而...

宸宸的博客 3万+

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

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

原码、反码及补码

任何存储于计算机中的数据,其本质都是以二进制码存储。计算机的运算器只有加法运算器。所以在计算机中没办法直接做减法。 从硬件的角度来说正数+正数、负数+负数都是可以通过加法器直接相加,只有正数加负数才算是减法。原码、反码及补码的产生过程就是为了解决计算机做减法和引入符号位的问题。

KEEP CODING 5200

原码、补码、反码的关系

一. 机器数和真值 在学习原码, 反码和补码之前, 需要先了解机器数和真值的概念. 1、机器数 一个数在计算机中的二进制表示形式, 叫做这个数的机器数。机器数是带符号的,在计算机用一个数的最高位存放符号, 正数为0, 负数为1. 比如,十进制中的数 +3 ,计算机字长为8位,转换成二进制就是00000011。如果是 -3 ,就是 10000011 。 那么,这里的 00000011 和 10000011 就是机器数。 2、真值 因为第一位是符号位,所以机器数的形式值就不等于真正的数值。例如.

leo187的博客 1万+

原码 反码 补码

计算机基础知识学习之原码 反码 补码

weixin_41043617的博客 1177

原码、反码、补码的相互转换

首先,正数的原码,反码,补码都是相同的。 所以,这里讨论负数的原码,反码,补码的相互转化问题。 1、负数原码和反码的相互转化 负数原码转化为反码:符号位不变,数值位按位取反。 如: 原码 1100 0010 反码 1011 1101 负数反码转化为原码:符号位不变,数值位按位取反。 如: 反码 1011 1101 原码 1100 0010 2、负数反码和补码的相互转化 负数反码转化为补码:末尾...

qq_38236355的博客 5705

原码、反码、补码及用途

原码、反码、补码及用途 反码(Ones' Complement) 概念: 反码是通过对原码的数值部分逐位取反(0变1,1变0)得到的。 正数的反码和原码相同。 负数的反码是其原码除符号位外所有位取反。 补码(Two's Complement) 概念: 补码是反码加1得到的。 正数的补码和原码相同。 负数的补码是其反码加1。

热土程序园,利他愉己~ 2259

原码、补码和反码之间的转换

在开始之前首先明确3个概念: 1、正数的原码、补码和反码都是一样的。 2、计算机中是用补码来表示数字的二进制的。 3、二进制的最高位(第一位)是符号位,0表示正数,1表示负数。 下面以一些简单的例子来介绍原码、反码和补码。采用8位二进制来进行说明即:0000 0000; 原码 [12]原 = 0000 1100, ...

VICTOR_fusheng的博客 5633
上一篇: 计算机中数的表示
下一篇: Shlwapi 简介
appcup
博客等级 码龄14年 1粉丝 4原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值