计算机内存数值存储方式

  • ⑴原码
  • ⑵反码
  • ⑶补码
  • ⑷补码的意义
  • ⑷补码计算示例
  • ⑸C语言中的有符号和无符号整形的取值范围的计算方式。

⑴原码

一个数的原码(原始的二进制码)有如下特点:

  • 最高位做为符号位,0 表示正,为 1 表示负
  • 其它数值部分就是数值本身绝对值的二进制数
  • 负数的原码是在其绝对值的基础上,最高位变为 1

下面数值以 1 字节的大小描述:

原码表示法简单易懂,与带符号数本身转换方便,只要符号还原即可,但当两 个正数相减或不同符号数相加时,必须比较两个数哪个绝对值大,才能决定谁 减谁,才能确定结果是正还是负,所以原码不便于加减运算

⑵反码

  • 对于正数,反码与原码相同
  • 对于负数,符号位不变,其它部分取反(1 变 0,0 变 1)


反码运算也不方便,通常用来作为求补码的中间过渡。

⑶补码

在计算机系统中,数值一律用补码来存储。
●补码的特点

  1. 对于正数,原码、反码、补码相同
  2. 对于负数,其补码为它的反码加 1
  3. 补码符号位不动,其他位求反,最后整个数加 1,得到原码

⑷补码的意义

示例 1:用 8 位二进制数分别表示+0 和-0

不管以原码方式存储,还是以反码方式存储,0 也有两种表示形式。为什么同 样一个 0 有两种不同的表示方法呢?
但是如果以补码方式存储,补码统一了零的编码:

这是因为:

⑷补码计算示例


在计算机系统中,数值一律用补码来存储,主要原因是:

  • 统一了零的编码
  • 将符号位和其它位统一处理
  • 将减法运算转变为加法运算
  • 两个用补码表示的数相加时,如果最高位(符号位)有进位,则进位被舍弃

⑸C语言中的有符号和无符号整形的取值范围的计算方式。


这里以int形式来计算无符号和有符号取值范围的计算方法

计算机内存数值存储方式(原码、反码、补码)相关推荐

  1. 为什么计算机内存数值存储方式是补码?

    为什么计算机内存数值存储方式是补码? 1. 原码 2. 反码 3. 补码 4. 补码的意义 首先我们得先把源码.反码.补码的概念搞清楚,然后对比三码的区别,再总结为什么计算机内存数值存储方式是补码. ...

  2. 计算机内存数值存储方式进制

    进制概念 进制也就是进位制,是人们规定的一种进位方法.对于任何一种进制,x进制表示某一位置上的数运算时是逢x进一位.十进制是逢十进一.十六进制是逢十六进一.二进制是逢二进一. 各进制数表示 八进制是逢 ...

  3. 正负数在计算机中的表示(原码反码补码)及位运算

    负数在现代计算机里一般用补码表示(正数也是) 正数补码就是它的原码 负数补码: 最高位是符号位,其余位为对应整数的原码取反再+1 如:1000 0000还原为原码:最高位是1,表示负数,剩余的各位取反 ...

  4. C语言基础(二)—— 常量与变量、数据类型、进位制、关键字、原码反码补码、限定符、字符串格式化输入输出

    1. 常量与变量 1.1 关键字 1.2 数据类型 数据类型的作用:编译器预算对象(变量)分配的内存空间大小. 1.3 常量 在程序运行过程中,其值不能被改变的量 常量一般出现在表达式或赋值语句中 整 ...

  5. java基础-原码反码补码

    本文帮助理解,Java中原码反码补码的原理 1:原码反码补码,基础概念和计算方法 对于一个数,计算机需要使用一定的编码方式进行存储.原码反码补码是计算机存储一个具体数字的编码方式. 原码: 第一位表示 ...

  6. python原码反码补码

    python原码反码补码 1. 计算机计算的逻辑 2. 原码反码补码 2.1 正数: 2.2 负数 2.3 原码与补码之间的转换 2.3.1 原码->补码 2.3.1 补码->原码 2.3 ...

  7. 10.原码 反码 补码

    +7的原码:0000 0111 -7的原码:1000 0111   第一位0代表正数,1代表负数,第一位为符号位 +7的反码:0000 0111 正数反码和原码一样 -7的反码:1111 1000   ...

  8. 【濡白的C语言】数据的存储(大小端模式,原码反码补码,浮点数的存储,浮点型精度缺失的原因)

    前言 很多学习C语言之后就会对各种类型感到很烦,但是数据的类型具有相当的意义.首先是类型决定了大小,即该数据在内存中开辟的空间大小:同时不同的类型还决定了数据存储的方式,相同的数据,存入整形与浮点型方 ...

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

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

最新文章

  1. 设计模式————单例模式
  2. AWS — AWS CloudFormation
  3. 可变参数中size_t遇见的问题
  4. python程序实例教程基础-Python程序设计实例教程
  5. springmvc十五:数据输出
  6. 如何使用.NET配置文件(二)
  7. 浅谈贷后管理之贷后跟踪——微金时代解决方案
  8. 68张机械原理动图,够你看一晚上了!
  9. Flowable学习笔记(二、BPMN 2.0-基础 )
  10. ArcGIS斜坡单元工具箱
  11. jinja2模板注入_Flask jinja2 模板注入思路总结
  12. SQL Server修改标识列方法 如自增列的批量化修改
  13. 当你输入一个网址的时候,实际会发生什么?(转)
  14. ATmega8仿真——键盘扫描的学习
  15. 微信小程序-强制手机端更新
  16. ps怎么将png做成gif_PS里面图片是gif的怎么转换成jpg和png的?
  17. Linux学习笔记——1、Basic knowledge
  18. Lora无线模块在畜牧业中的应用
  19. 字节跳动扣响搜索扳机
  20. Android外接midi设备的录音

热门文章

  1. Godaddy无缝切换SSL,无需续费可省12美元
  2. android环信删除会话列表,关于会话列表的置顶聊天
  3. WannaCrypt(永恒之蓝) down.bddp.net
  4. 第三篇:【重磅】呼叫中心运营指标KPI字典
  5. SmtpJS发送邮件教程
  6. 浅谈CPU 硬盘 内存关系
  7. 检验特殊字符java_java中文及特殊字符的校验方法
  8. vivo S7e和华为nova8se 的区别 哪个好
  9. UIImageView视图内容按比例缩小并淅淅隐去
  10. selenium 远程调用浏览器