在计算机系统中,数值一律用补码来表示和存储。原因在于,使用补码,可以将符号位和数值域统一处理;同时,加法和减法也可以统一处理。此外,补码与原码相互转换,其运算过程是相同的,不需要额外的硬件电路。

举个例子快速掌握吧

给一个数求补码

1、正整数的补码是其二进制表示,与原码相同

+9的补码是00001001,二进制表示也是00001001,原码:00001001

2、求负整数的补码,将其对应的二进制表示除了符号位的所有位取反后加1

求-5的补码。-5是负数,符号位是1,则对应-5的二进制表示也是原码(10000101)符号位不变,其余位取反加1→(11111011)。所以-5的补码是11111011。为,原码(true form)是一种计算机中对数字的二进制定点表示方法。原码表示法在数值前面增加了一位符号位(即最高位为符号位):正数该位为0,负数该位为1(0有两种表示:+0和-0),其余位表示数值的大小。则-5的原码即是其二进制表示。+11的原码为00001011,-11的原码就是10001011

补码求原码

已知一个数的补码,求原码的操作其实就是对该补码再求补码:

1如果补码的符号位为“0”,其原码就是补码。

2如果补码的符号位为“1”,符号位不变,其余位取反加1,那么求这个补码的补码就是要求的原码。

e.g.已知一个补码为11111001,则原码是10000111(-7)。

因为符号位为“1”,表示是一个负数,所以该位不变,仍为“1”。

其余七位1111001取反后为0000110;(注:反码的概念就是符号位不变,其余位取反就是反码)

再加1,所以是10000111。

已知补码求表示的数值

e.g.-65的补码是10111111

若直接将10111111转换成十进制,发现结果并不是-65,而是191。

事实上,在计算机内,如果是一个二进制数,其最左边的位是1,则我们可以判定它为负数,并且是用补码表示。

若要得到一个负二进制补码的数值,只需求对应的二进制表示即可,即只需求原码即可,只要对除符号位的其余位取反加1,就可算出其余位所表示的十进制数,将符号位变为负号-,加在这个十进制数前面即获得此数。

如:二进制值:10111111(-65的补码)

除符号位其余位取反:11000000

加1:11000001(-65)

+0与-0

首先正数的反码补码与原码相同

+0的原码:00000000

+0的反码:00000000

+0的补码:00000000

-0的原码:10000000

-0的反码:11111111(后面分析-0无反码)

-0的补码:00000000(补码规定0没有正负之分)

-128的原码:10000000

-128的反码:11111111

-128的补码:10000000

-0与-128有相同的反码,为减少歧义,-0没有反码。

综上所述:1.-128的补码和原码一样都是1000 0000,

2.0的原码、反码和补码都一样(即0000 0000)

3.如果把-0当做负数,1000 0000就会有歧义(事实上0的补码只有一个0000 0000)

补码的范围是[-2^(n-1),2^(n-1)-1]

计算机中的补码和反码都是二进制吗,计算机中数值型数据二进制形式存储过程中的原码,反码与补码...相关推荐

  1. 二进制八进制十进制十六进制及原码反码补码

    1.进制的介绍 定义:进位制,人们规定的一种进位方式:表示某一位置上的数,运算时是逢X进一位. 十进制是逢十进一:二进制是逢二进一,八进制是逢八进一: 常见进制:二进制,八进制,十进制,十六进制: 学 ...

  2. 原码反码补码原理理解

    原码反码补码原理理解 基础知识 原码 定义 在这里,我们模仿一下计算机对数据运算的过程! 那么所有运算都是正确的吗?我们再试一组. 反码 定义 在这里,我们模仿一下计算机对数据运算的过程! 正数加负数 ...

  3. 原码 反码 补码的简单计算附例题

    原码 反码 补码 对计算机中常见数据简单分类 机器数 与 真值 原码 反码 补码 扩展 对计算机常见数据的分类 机器数 就是数值在计算机中的二进制表现形式 机器数在计算机中有符号,使用 最高位表示符号 ...

  4. c语言原码 补码 反码,C语言 原码--反码--补码

    //原码,反码,补码 #include #include //数值的表示方法--原码.反码和补码 //原码:最高位为符号位,其余各位为数值本身的绝对值 //反码: //正数:反码与原码相同 //负数: ...

  5. 关于计算机中 原码, 反码, 补码 详解

    本篇文章讲解了计算机的原码, 反码和补码. 并且进行了深入探求了为何要使用反码和补码, 以及更进一步的论证了为何可以用反码, 补码的加法计算原码的减法. 论证部分如有不对的地方请各位牛人帮忙指正! 希 ...

  6. 统计正数和负数的个数然后计算这些数的平均值_计算机中的二进制原来是这样:原码、反码和补码

    我是一个计算机专业大一的萌(lā)新(jī),刚刚开始接触二进制.很多朋友都知道计算机内部的数据通过二进制来储存和计算,但是一个小小二进制非要整一些花里胡哨(bushi)的东西,原码补码反码的一群东西 ...

  7. 计算机中的原码,计算机中的原码反码补码移码

    计算机中的原码反码补码移码 原码 数值 X 的原码记为 [X]原,如果机器字长为 n (即采用 n 个二进制位表示数据),则最高位是符号位,0 表示正号,1 表示负号,基余的 n~1 位表示数值的绝对 ...

  8. python二进制反码例题_python中的进制转换和原码,反码,补码

    python中的进制转换和原码,反码,补码 计算机文件大小单位 b = bit 位(比特) B = Byte 字节 1Byte = 8 bit #一个字节等于8位 可以简写成 1B = 8b 1KB ...

  9. 计算机原码补码和反码的计算方法,一个数的原码,反码,补码怎么算,原码 反码 补码...

    数在计算机中是以二进制形式表示的. 数分为有符号数和无符号数. 原码.反码.补码都是有符号定点数的表示方法. 一个有符号定点数的最高位为符号位,0是正,1是副. 以下都以8位整数为例, 原码就是这个数 ...

最新文章

  1. 作者:周一懋(1982-),男,江苏汇誉通数据科技有限公司大数据事业部总监、工程师...
  2. properties随机数与配置文件占位符
  3. swiper叠加轮播效果 (含源码) - 案例篇
  4. Connection timed out: connect; Communications link failure
  5. 硬件工程师的基本技能
  6. VB更改任何标题程序源代码
  7. ASP.NET Web API 异常日志记录
  8. IOS 项目中遇到的问题
  9. 对象取值操作Object.values()
  10. c语言程序怎样输出一个图形,用c语言如何输出并显示一个序列图形
  11. 燕大学子知网使用手册
  12. C#生成与识别条形码、二维码示例 zxing、 barcodelib生成条形码 code128B等 无白边 自动宽度
  13. Day14-正则表达式及常用类
  14. react-hooks之useEffect
  15. 一个mybatis动态 SQL查询的完整小案例。包含多表联合查询。
  16. SecureCRT的安装及破解(详细过程)
  17. 【黑马程序员pink老师前端】JavaScript对象
  18. 全国2020年8月自考信息资源管理真题和答案
  19. “请保持清醒:开源是和世界同步的绝佳机会!”
  20. ubuntu20.04显卡1080ti安装cuda和cudnn

热门文章

  1. zookeeper的名词复盘-Stat状态信息
  2. 支付宝支付 - 构建支付表单填并提交
  3. SpringMVC的请求-文件上传-文件上传的原理
  4. 数据源(连接池)的作用
  5. 异常注意事项_finally有return语句
  6. 创建二级索引_技术分享 | InnoDB 排序索引的构建
  7. Spring Aware接口
  8. 谷歌浏览器32位版本安装包_Windows 10 OEM渠道告别32位版本 这意味着什么?
  9. Java 语法规定之外的命名注释规范
  10. 08 线性回归 + 基础优化算法【动手学深度学习v2】