原码、反码和补码详细集合

目录

一.什么是原码,反码,补码?

1).原码(true form):

2).反码:

3).补码:

二.为什么要有原码,反码,补码 


一.什么是原码,反码,补码?

1).原码(true form):

原码是计算机中对数字的一种二进制定点表示方法。

在原码中,取最高位用做符号位(0表示正,1表示负)其余位表示数值大小(该数真值的绝对值)。

整数:原码即其二进制。

小数:将小数部分不停乘2,每次取其整数部分,直到该数没有小数为止,每次取出的整数加起来             即使小数部分的二进制,即小数的原码。

示例:

1116个二进制位表示0000 0000 0000 1011
8个二进制位表示0000 1011
-1116个二进制位表示1000 0000 0000 1011
8个二进制位表示1000 1011
0.58个二进制位表示0000 0000. 1
-0.58个二进制位表示1000 0000. 1

由此我们可以得到:

原码的优点: 简单直观。

原码的缺点: 原码不能直接参与计算,会出错误 

2).反码:

反码是数值存储的一种,多应用于系统环境设置(如linux平台的目录和文件的默认权限的设置)。

也常用作 原码求补码 或 补码求原码 的过度码。

正数: 原码与反码相同。

负数: 原码符号位除外,其他位按位取反。

示例:

118个二进制位表示0000 1011
-118个二进制位表示1111 0100
0.58个二进制位表示0000 0000.1
-0.58个二进制位表示1111 1111.0

由此我们可以看出:

反码的有点:加减法运算规则简单,只需对应位相加并进位即可。

反码的缺单:当 0 和 -0存在不同的值。

3).补码:

补码是计算机把减法运算转化为加法运算的关键编码。

正整数: 补码和原码、反码相同。

负整数: 补码等于负整数的反码加一。

正小数:补码与原码、反码相同。

负小数:补码 . 后的值加1.

示例:

118个二进制位表示0000 1011
-118个二进制位表示1111 0101
0.258个二进制位表示0000 0000.01
-0.258个二进制位表示1111 1111.11

二.为什么要有原码,反码,补码 

由于二进制对于计算机的硬件来说,更容易实现(只有两种状态),并且有利于提高运算速度以及适应逻辑运算(真和假两种状态),所以使用二进制的形式进行存储和运算数据。

我们知道,一台计算机由运算器、控制器、存储器、输入和输出设备组成,但是其中运算器只有加法运算器,没有减法运算器。即计算机只能进行加法运算,为了实现数据的减法运算,就引入了反码的概念。但是使用反码计算时,结果的真值部分是正确的。问题其实就出现在"0"这个特殊的数值上。 虽然人们理解上+0和-0是一样的, 但是0带符号是没有任何意义的。 而且会有[0000 0000]原和[1000 0000]原两个编码表示0。于是,补码就出现了,修复了0的符号以及存在两个编码的问题, 而且还能够多表示一个最低数(从八进制整型来说,范围从(-127,127)到(-128 ,127))。

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

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

相关文章

[rejected]master -> master (non-fast-forward)的解决方法

☆ 问题描述 [rejected]master -> master (non-fast-forward)的解决方法 本地已经创建了一个项目&#xff0c;想要把远程库的代码合并到本地库上&#xff0c;报错… ★ 解决方案 git pull <远程服务器> <远程分支> --allow-unrelated-histories 先使用这个代…

[最全]设计模式实战(总序)

最近一段时间,读完了《Android源码设计模式-解析与实战》和《大话设计模式》这两本经典设计模式相关书籍,撰写相关笔记。 每种设计模式将从以下方式聊聊: 1. 是什么(What,即定义);解决什么问题(Why,即使用场景) 2. 如何使用(How,即最简UML图+Java代码) 3. 生活…

npm 安装踩坑

1 网络正常&#xff0c;但是以前的老项目安装依赖一直卡住无法安装&#xff1f;哪怕切换成淘宝镜像 解决办法&#xff1a;切换成yarn (1) npm i yarn -g(2) yarn init(3) yarn install在安装的过程中发现&#xff1a; [2/4] Fetching packages... error marked11.1.0:…

企业供应链数字化转型如何做?让企业盈利能力增强再飞一会

引言&#xff1a;企业供应链数字化转型是外部环境变化、内部需求驱动、数字化转型的必要性和技术进步的推动共同作用的结果。供应链数字化转型可以通过数据整合、自动化、协同工作等方式提高供应链的效率和降低成本&#xff0c;例如&#xff0c;使用数字化技术可以实现快速采购…

Studying-代码随想录训练营day14| 226.翻转二叉树、101.对称二叉树、104.二叉树的最大深度、111.二叉树的最小深度

第十四天&#xff0c;(ง •_•)ง&#x1f4aa;&#x1f4aa;&#xff0c;编程语言&#xff1a;C 目录 226.翻转二叉树 101.对称二叉树 100.相同的树 572.另一个树的子树 104.二叉树的最大深度 559.n叉树的最大深度 111.二叉树的最小深度 总结 226.翻转二叉树 文档讲…

【八】【QT开发应用】QTcreate项目打包成.exe文件或.apk文件,EnigmaVirtualBox软件下载,虚拟网站代打开QT应用

EnigmaVirtualBox下载 Enigma Virtual Box QTcreate项目打包成.exe可执行文件 找到自己写好的项目的.exe文件 将这个文件复制到一个新的文件夹里面 在这个新的文件夹里面打开cmd,这样可以使得cmd直接进入到该文件夹 打包.exe命令行 输入下面的命令行 windeployqt game…

一款基于WordPress开发的高颜值的自适应主题Puock

主题特性 支持白天与暗黑模式 全局无刷新加载 支持博客与CMS布局 内置WP优化策略 一键全站变灰 网页压缩成一行 后台防恶意登录 内置出色的SEO功能 评论Ajax加载 文章点赞、打赏 支持Twemoji集成 支持QQ登录 丰富的广告位 丰富的小工具 自动百度链接提交 众多页面模板 支持评论…

bazel :Output Directory Layout

Output Directory Layout This page covers requirements and layout for output directories. Requirements for an output directory layout: Doesn’t collide if multiple users are building on the same box.如果多个用户在同一个盒子上建造则不会发生冲突。 Support…

如何开发一个项目脚手架cli

目录 背景正文unbuildpromptsprogresskolorist 设置打包命令npm execnpxnpm init/ npm create/ npm innit 使用最后 背景 随着团队项目类型越来越多&#xff0c;方便后续快速去开发项目&#xff0c;会出现各种类型的项目模版项目。 这样开发只需要通过脚手架选择自己需要的项目…

Mybatis是如何进行分页的

MyBatis 也提供了支持分页的方案&#xff0c;其主要思路是使用 Limit 偏移量和限制个数&#xff0c;来获取指定数量的数据 MyBatis 提供两种分页方式&#xff1a;基于参数改造和基于插件拦截 1、基于参数改造&#xff1a; 第一种分页方式是基于参数改造的&#xff0c;通过添加…

示例:推荐一个自定义的Ribbon皮肤

一、目的&#xff1a;WPF自带的Ribbon控件功能很强大&#xff0c;但使用过程中感觉显示的样式不是很好&#xff0c;或者不适合自己的项目&#xff0c;下面介绍一个基于自带Ribbon控件样式的修改&#xff0c;主要修改了些高度&#xff0c;间距&#xff0c;背景色&#xff0c;前景…

【漏洞复现】AJ-Report开源数据大屏 verification;swagger-ui RCE漏洞

0x01 产品简介 AJ-Report是一个完全开源的B平台&#xff0c;酷炫大屏展示&#xff0c;能随时随地掌控业务动态&#xff0c;让每个决策都有数据支撑。多数据源支持&#xff0c;内置mysql、elasticsearch、kudu等多种驱动&#xff0c;支持自定义数据集省去数据接口开发&#xff…

Spring Cloud Ribbon 介绍

目录 一、Spring Cloud Ribbon简介二、Ribbon 负载均衡策略三、Ribbon 加载机制四、Ribbon的工作原理五、Ribbon的配置和使用六、Ribbon的作用和优势 一、Spring Cloud Ribbon简介 Spring Cloud Ribbon是一个基于Netflix Ribbon实现的客户端负载均衡器。它运行在消费者端&…

什么是APP分发-了解APP分发的核心概念

APP分发的定义和意义 大家有没有过这样的经历&#xff1a;辛辛苦苦开发了一款APP&#xff0c;却不知道该怎么让更多人知道和使用&#xff1f;APP分发的重要性就凸显出来了。APP分发就是将你的应用推送到不同的应用市场和平台&#xff0c;让更多用户能够下载和使用。 小猪app封…

Python的pip切换国内源

&#x1f4da;目录 起因&#xff1a;pip切换国内源&#xff1a;操作永久修改pip配置文件测试永久源配置是否成功 pip其他环境的配置永久源配置 起因&#xff1a; pyCharm安装模块的手出现ModuleNotFoundError: No module named distutils 由于使用pip install distutils下载不了…

[图解]建模相关的基础知识-16

1 00:00:00,350 --> 00:00:04,130 刚才那个&#xff0c;就相当于&#xff0c;12这个我们可以认为是什么 2 00:00:05,020 --> 00:00:11,360 我们用类图来表达就是&#xff0c;员工、电话 3 00:00:13,320 --> 00:00:15,080 多个 4 00:00:15,090 --> 00:00:16,440 …

Python与Java实现SM2互调

文章目录 一、项目背景二、环境极其依赖三、具体功能1.Python生成密钥对2.java生成密钥对3.Python加签验签4.java加签验签 四、遇到的问题五、解决方案 一、项目背景 Python对接Java接口互相SM2加签验签 二、环境极其依赖 python环境 pip3 install gmssljava环境 <depen…

docker的隔离机制

linux内核带来的便利 Linux 内核是 Docker 实现隔离的基础。作为操作系统的核心,Linux 内核提供了许多用于资源隔离和安全性的关键机制,为 Docker 容器化技术提供了基础支持。 Namespaces Linux 内核自 2.6.24 版本开始引入了命名空间(Namespaces)机制。Namespaces 为进程提…

数据库的ACID是通过什么保证的

1、原子性&#xff08;Atomicity&#xff09; 通过日志&#xff08;Logging&#xff09;来记录所有对数据库的修改。如果事务中的某个操作失败&#xff0c;系统可以回滚&#xff08;Rollback&#xff09;到事务开始前的状态&#xff0c;撤销所有已执行的修改。 使用写前日志&…

100多个ChatGPT指令提示词分享

当前&#xff0c;ChatGPT几乎已经占领了整个互联网。全球范围内成千上万的用户正使用这款人工智能驱动的聊天机器人来满足各种需求。然而&#xff0c;并不是每个人都知道如何充分有效地利用ChatGPT的潜力。其实有许多令人惊叹的ChatGPT指令提示词&#xff0c;可以提升您与ChatG…