原码、反码以及补码

2023-11-14

目录

一、概念

二、补码的意义



一、概念

计算机底层存储数据时,存储的是数据对应的二进制数字。对于整型数据,其二进制表示形式有三种,分别是:原码反码补码,而实际存储的是整型数据的补码

原码、反码以及补码都是有符号的,其中最高位存放符号位,0 表示正数,1 则表示负数。

1. 原码:最高位表示正负,其余位表示数值。例如十进制的正负 1,用 8 位二进制的原码表示:

+1 = [0000 0001]原,-1 = [1000 0001]原

2. 反码:正数的反码和原码相同;负数的反码是在原码的基础上,符号位不变,其余位按位取反。

+1 = [0000 0001]反,-1 = [1111 1110]反 

3. 补码:正数的补码和原码也相同;负数的补码是在反码的基础上加 1。

+1 = [0000 0001]补,-1 = [1111 1111]补 

补码的最后一位如果是 1,减 1 后变为 0,按位取反则又变回 1;直接取反,再加 1,得到的是一样的结果。

补码的最后几位如果是 10+(它表示 0 出现了一次或多次),减 1 后变成了 01+,按位取反则又变回了 10+;直接取反,再加 1,得到的结果也是一样的。

二、补码的意义

我们人脑可以知道最高位是符号位,在计算的时候就会根据符号位进行加减,但是对于计算机,加减乘除已经是最基础的运算,因此要设计得尽量简单,而让计算机辨别符号位会让计算机的基础电路设计变得复杂。于是人们开始探索将符号位参与运算,并只保留加法的方法,根据运算法则,减去一个数等于加上这个数的负数,即 1 - 1 = 1 + (-1)

1. 使用原码运算

1 - 1 = 1 + (-1) = [0000 0001]原 + [1000 0001]原 = [1000 0010]原 = -2

所以让符号位也参与运算时,使用原码,对于减法运算来说,结果是不正确的。这也是计算机内存在存储数据时不使用原码的原因。为了解决这一问题,就出现了反码。

2. 使用反码运算:  

1 - 1 = 1 + (-1) = [0000 0001]反 + [1111 1110]反 = [1111 1111]反 = [1000 000]原 = -0

使用反码的问题在于 0 的符号是负号,而且 [0000 0000]原 和 [1000 0000]原 都表示 0。为了解决这一问题,就出现了补码。

3. 使用补码运算:  

1 - 1 = 1 + (-1) = [0000 0001]补 + [1111 1111]补 = 1(舍去)[0000 0000]反 = [0000 0000]原 = 0

这样就不存在 -0 的问题了。

我们还可以发现,[1000 0000]补 表示 -128

推理过程:(-1) + (-127) = [1111 1111]补 + [1000 0001]补 = [1000 0000]补。

注意:-128 并没有原码和反码表示

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

原码、反码以及补码 的相关文章

  • 事务的实现原理

    事务的实现 简介 特性 ACID 状态与分类 实现机制 日志机制 redo log undo log 锁机制 如何使用 简介 有许多小伙伴初学事务还不太清楚是干什么的 那么我们在简介中一次性将事务给搞懂 首先我们先来简单的说一下事务是什么
  • nmap命令使用大全,详细清晰

    一 主机发现 全面扫描 综合扫描 nmap A 192 168 1 103 Ping 扫描 nmap sP 192 168 1 1 24 免 Ping 扫描 穿透防火墙 避免被防火墙发现 nmap P0 192 168 1 103 TCP
  • QNX系统+Crank的UI设计方案-qnx的HMI方案

    锋影 e mail 174176320 qq com 今天先把QNX Acceleration Kit验证一下
  • IDEA修改文件名和类名

    结果
  • 深入理解Direct3D9

    String Of Brilliant Blue QQ群 8082814 随笔 34 文章 32 评论 136 博客园 首页 新随笔 联系 管理 深入理解Direct3D9 深入理解D3D9对图形程序员来说意义重大 我把以前的一些学习笔记都

随机推荐

  • 正则高级应用

    案例 最近在使用notepad 做sql格式化 select from 之间的逗号后面的数据进行换行再加一个制表符 直接一个正则表达式搞定 s from SELECT biz date SUM bigorder add consum 1m
  • 索引设计原则

    索引设计原则 代码先行 索引后上 尽量先把业务sql写完 根据sql来看看如何建索引 联合索引尽量覆盖条件 比如可以设计一个或者两三个联合索引 尽量少建单值索引 联合索引尽量覆盖 mysql一般只会选一个索引走 很多where可能只走一个
  • org.apache.shiro.authc.AuthenticationException: Authentication failed for token submission [org.apac

    本人刚接触shiro 自己进行测试 发现报错 小白一个希望大佬们多多指点 在这跟大家说一下可能不是你们的错误 但是是我的错非常稀奇 好博客的解决方法都试了不管用 最后慢慢查慢慢看 我的错是 在走进到realm时的执行dao层方法时报这个错误
  • flutter dio 请求方式为form-data遇到的问题

    在网络中请求body中有三种方式 postbody query formdata 如下图 现在我们用的恰好是第一种方式 因为首次用这种方式 感觉也是比较坑 后面通过摸索 查看源码发现 需要用fromdata方式包装进去放到请求参数中 正确的
  • 电子元器件知识---三极管

    一 三极管 三级管可以实现这样的控制 当基级没有电流时 它是截止的 而当基极有了电流 三极管就导通了 接下来 简单阐述一下 它为什么能够实现这样的功能 下图是NPN型三极管的示意图 我们知道 硅原子外面含有4个电子 纯净的硅晶体并不导电 因
  • 前端面试思维导图,面试流程注意事项

    前端面试思维导图 前端面试有着一图足矣
  • 计算机网络笔记一(计算机网络基本概念、TCP/IP协议体系)

    1 计算机网络基础概念 1 1计算机网络定义 计算机网络就是互连的 自治的计算机集合 自治 无主从关系 互连 互联互通 1 2什么是Internet Internet是最大的计算机网络 1 2 1从组成细节的角度 由很多个ISP网络互连的网
  • Jira实战

    什么是问题类型 问题类型是为了在请求之间起到简单区别的作用 范例 缺陷 任务 功能 等等 属性 名称 描述 类型 标准类型 父 或子类型 子 图标 好处 图标在筛选器 仪表盘 面板和邮件通知上提供了视觉上的区别 你可以为每一个类型设定一个标
  • 学习笔记 JavaScript ES6 ES6中的类与继承

    学习内容 类的定义 类的继承 静态属性和方法的定义 ES6中 用class关键字声明一个类 class Peple constructor name age this name name this age age showName cons
  • C++多继承构造函数调用顺序

    class B1 public B1 int i cout lt lt consB1 lt
  • python的socket通信,实现数据监听,与串口助手连接并且收发

    1 Socket通信 1 Socket原理 Socket是一种网络通信的抽象接口 用于在不同计算机之间进行进程间通信或网络通信 Socket通常基于TCP IP协议栈 通过网络套接字 socket 在网络中传输数据 它允许不同计算机之间的进
  • 交通路标识别(毕业设计)

    概述 代码获取 可私信 在TensorFlow中实现单镜头多盒检测器 SSD 用于检测和分类交通标志 该实现能够在具有Intel Core i7 6700K的GTX 1080上实现40 45 fps 请注意 此项目仍在进行中 现在的主要问题
  • 基于 ACK Fluid 的混合云优化数据访问(一):场景与架构

    本系列文章将介绍如何基于 ACK Fluid 支持和优化混合云的数据访问场景 概述 在 AI 和大数据时代 算力即正义 强大的算力推动了源源不断的创新 然而 企业自建的算力集群存在资源容量和弹性能力相对有限的问题 在业务低谷时可能会面临高昂
  • CTF入门教程(非常详细)从零基础入门到竞赛,看这一篇就够了!

    目录 一 CTF简介 二 CTF竞赛模式 三 CTF各大题型简介 四 CTF学习路线 4 1 初期 1 html css js 2 3天 2 apache php 4 5天 3 mysql 2 3天 4 python 2 3天 5 burp
  • [Concept] IETF 国际互联网工程任务组

    IETF The Internet Engineering Task Force 国际互联网工程任务组 1 1985年成立 2 公开性质的大型国际民间团体 3 互联网标准化组织 4 主要任务 负责互联网相关技术规范的研发和制定 可以在官方网
  • 向Git提交新项目

    向Git提交新项目 假设现在存在项目iyowei cn 项目目录结构如下 1 2 3
  • Maven学习笔记二十:Maven仓库(远程仓库的配置)

    Maven仓库 远程仓库的配置 在很多情况下 默认的中央仓库无法满足项目的需求 可能项目需要的构件存在于另外一个远程仓库中 如 JBoss Maven仓库 这时 可以在POM中配置该仓库 见代码请单
  • cnn 示意图_基于BERT+CNN及GRU语言模型的司法考试问答模型

    在上文 1 提到的BERT CNN司法考试模型的基础上 对模型结构和参数进行了调整 调整后增加了CNN层数 示意图如图1 图1 BERT编码后接入的CNN结构示意图 其中详细参数见图2 图2 CNN和输出层的网络结构参数 在给出的司法考试训
  • Python爬虫实战之抓取猫眼电影

    Python爬虫实战之抓取猫眼电影 1 爬虫概念 网络爬虫 又称为网页蜘蛛 网络机器人 在FOAF社区中间 更经常的称为网页追逐者 是一种按照一定的规则 自动地抓取万维网信息的程序或者脚本 另外一些不常使用的名字还有蚂蚁 自动索引 模拟程序
  • 原码、反码以及补码

    目录 一 概念 二 补码的意义 一 概念 计算机底层存储数据时 存储的是数据对应的二进制数字 对于整型数据 其二进制表示形式有三种 分别是 原码 反码 补码 而实际存储的是整型数据的补码 原码 反码以及补码都是有符号的 其中最高位存放符号位