计算机内存数值存储方式(原码、反码、补码)
计算机内存数值存储方式
- ⑴原码
- ⑵反码
- ⑶补码
- ⑷补码的意义
- ⑷补码计算示例
- ⑸C语言中的有符号和无符号整形的取值范围的计算方式。
⑴原码
一个数的原码(原始的二进制码)有如下特点:
- 最高位做为符号位,0 表示正,为 1 表示负
- 其它数值部分就是数值本身绝对值的二进制数
- 负数的原码是在其绝对值的基础上,最高位变为 1
下面数值以 1 字节的大小描述:
原码表示法简单易懂,与带符号数本身转换方便,只要符号还原即可,但当两 个正数相减或不同符号数相加时,必须比较两个数哪个绝对值大,才能决定谁 减谁,才能确定结果是正还是负,所以原码不便于加减运算
⑵反码
- 对于正数,反码与原码相同
- 对于负数,符号位不变,其它部分取反(1 变 0,0 变 1)
反码运算也不方便,通常用来作为求补码的中间过渡。
⑶补码
在计算机系统中,数值一律用补码来存储。
●补码的特点
- 对于正数,原码、反码、补码相同
- 对于负数,其补码为它的反码加 1
- 补码符号位不动,其他位求反,最后整个数加 1,得到原码
⑷补码的意义
示例 1:用 8 位二进制数分别表示+0 和-0
不管以原码方式存储,还是以反码方式存储,0 也有两种表示形式。为什么同 样一个 0 有两种不同的表示方法呢?
但是如果以补码方式存储,补码统一了零的编码:
这是因为:
⑷补码计算示例
在计算机系统中,数值一律用补码来存储,主要原因是:
- 统一了零的编码
- 将符号位和其它位统一处理
- 将减法运算转变为加法运算
- 两个用补码表示的数相加时,如果最高位(符号位)有进位,则进位被舍弃
⑸C语言中的有符号和无符号整形的取值范围的计算方式。
这里以int形式来计算无符号和有符号取值范围的计算方法
计算机内存数值存储方式(原码、反码、补码)相关推荐
- 为什么计算机内存数值存储方式是补码?
为什么计算机内存数值存储方式是补码? 1. 原码 2. 反码 3. 补码 4. 补码的意义 首先我们得先把源码.反码.补码的概念搞清楚,然后对比三码的区别,再总结为什么计算机内存数值存储方式是补码. ...
- 计算机内存数值存储方式进制
进制概念 进制也就是进位制,是人们规定的一种进位方法.对于任何一种进制,x进制表示某一位置上的数运算时是逢x进一位.十进制是逢十进一.十六进制是逢十六进一.二进制是逢二进一. 各进制数表示 八进制是逢 ...
- 正负数在计算机中的表示(原码反码补码)及位运算
负数在现代计算机里一般用补码表示(正数也是) 正数补码就是它的原码 负数补码: 最高位是符号位,其余位为对应整数的原码取反再+1 如:1000 0000还原为原码:最高位是1,表示负数,剩余的各位取反 ...
- C语言基础(二)—— 常量与变量、数据类型、进位制、关键字、原码反码补码、限定符、字符串格式化输入输出
1. 常量与变量 1.1 关键字 1.2 数据类型 数据类型的作用:编译器预算对象(变量)分配的内存空间大小. 1.3 常量 在程序运行过程中,其值不能被改变的量 常量一般出现在表达式或赋值语句中 整 ...
- java基础-原码反码补码
本文帮助理解,Java中原码反码补码的原理 1:原码反码补码,基础概念和计算方法 对于一个数,计算机需要使用一定的编码方式进行存储.原码反码补码是计算机存储一个具体数字的编码方式. 原码: 第一位表示 ...
- python原码反码补码
python原码反码补码 1. 计算机计算的逻辑 2. 原码反码补码 2.1 正数: 2.2 负数 2.3 原码与补码之间的转换 2.3.1 原码->补码 2.3.1 补码->原码 2.3 ...
- 10.原码 反码 补码
+7的原码:0000 0111 -7的原码:1000 0111 第一位0代表正数,1代表负数,第一位为符号位 +7的反码:0000 0111 正数反码和原码一样 -7的反码:1111 1000 ...
- 【濡白的C语言】数据的存储(大小端模式,原码反码补码,浮点数的存储,浮点型精度缺失的原因)
前言 很多学习C语言之后就会对各种类型感到很烦,但是数据的类型具有相当的意义.首先是类型决定了大小,即该数据在内存中开辟的空间大小:同时不同的类型还决定了数据存储的方式,相同的数据,存入整形与浮点型方 ...
- 关于计算机中 原码, 反码, 补码 详解
本篇文章讲解了计算机的原码, 反码和补码. 并且进行了深入探求了为何要使用反码和补码, 以及更进一步的论证了为何可以用反码, 补码的加法计算原码的减法. 论证部分如有不对的地方请各位牛人帮忙指正! 希 ...
最新文章
- 设计模式————单例模式
- AWS — AWS CloudFormation
- 可变参数中size_t遇见的问题
- python程序实例教程基础-Python程序设计实例教程
- springmvc十五:数据输出
- 如何使用.NET配置文件(二)
- 浅谈贷后管理之贷后跟踪——微金时代解决方案
- 68张机械原理动图,够你看一晚上了!
- Flowable学习笔记(二、BPMN 2.0-基础 )
- ArcGIS斜坡单元工具箱
- jinja2模板注入_Flask jinja2 模板注入思路总结
- SQL Server修改标识列方法 如自增列的批量化修改
- 当你输入一个网址的时候,实际会发生什么?(转)
- ATmega8仿真——键盘扫描的学习
- 微信小程序-强制手机端更新
- ps怎么将png做成gif_PS里面图片是gif的怎么转换成jpg和png的?
- Linux学习笔记——1、Basic knowledge
- Lora无线模块在畜牧业中的应用
- 字节跳动扣响搜索扳机
- Android外接midi设备的录音