计算机组成原理---之原码,补码,反码
本篇文章讲解了计算机的原码, 反码和补码. 并且进行了深入探求了为何要使用反码和补码, 以及更进一步的论证了为何可以用反码, 补码的加法计算原码的减法. 论证部分如有不对的地方请各位牛人帮忙指正! 希望本文对大家学习计算机基础有所帮助!
一. 机器数和真值
在学习原码, 反码和补码之前, 需要先了解机器数和真值的概念.
1、机器数
一个数在计算机中的二进制表示形式, 叫做这个数的机器数。机器数是带符号的,在计算机用一个数的最高位存放符号, 正数为0, 负数为1.
比如,十进制中的数 +3 ,计算机字长为8位,转换成二进制就是00000011。如果是 -3 ,就是 10000011 。
那么,这里的 00000011 和 10000011 就是机器数。
2、真值
因为第一位是符号位,所以机器数的形式值就不等于真正的数值。例如上面的有符号数 10000011,其最高位1代表负,其真正数值是 -3 而不是形式值131(10000011转换成十进制等于131)。所以,为区别起见,将带符号位的机器数对应的真正数值称为机器数的真值。
例:0000 0001的真值 = +000 0001 = +1,1000 0001的真值 = –000 0001 = –1
二. 原码, 反码, 补码的基础概念和计算方法.
在探求为何机器要使用补码之前, 让我们先了解原码, 反码和补码的概念.对于一个数, 计算机要使用一定的编码方式进行存储. 原码, 反码, 补码是机器存储一个具体数字的编码方式.
1. 原码
原码就是符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值. 比如如果是8位二进制:
[+1]原 = 0000 0001
[-1]原 = 1000 0001
第一位是符号位. 因为第一位是符号位, 所以8位二进制数的取值范围就是:
[1111 1111 , 0111 1111]
即
[-127 , 127]
原码是人脑最容易理解和计算的表示方式.
2. 反码
反码的表示方法是:
正数的反码是其本身
负数的反码是在其原码的基础上, 符号位不变,其余各个位取反.
[+1] = [00000001]原 = [00000001]反
[-1] = [10000001]原 = [11111110]反
可见如果一个反码表示的是负数, 人脑无法直观的看出来它的数值. 通常要将其转换成原码再计算.
3. 补码
补码的表示方法是:
正数的补码就是其本身
负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1. (即在反码的基础上+1)
[+1] = [00000001]原 = [00000001]反 = [00000001]补
[-1] = [10000001]原 = [11111110]反 = [11111111]补
对于负数, 补码表示方式也是人脑无法直观看出其数值的. 通常也需要转换成原码在计算其数值.
转载:https://blog.csdn.net/zl10086111/article/details/80907428
计算机组成原理---之原码,补码,反码相关推荐
- 计算机组成原理之 原码 补码 反码
原码 补码 反码 前言 一.有符号数 1.1原码 补码 反码 总结 前言 在计算机中一般使用二进制表示各个有理数.在计算机中参与运算的数有两大类:有符号数和无符号数.无符号数就是没有符号的数,在寄存器 ...
- 【计算机组成原理】-- 原码,反码,补码,移码整数小数计算
[计算机组成原理]-- 原码,反码,补码,移码整数小数计算
- 计算机基础:原码补码反码计算
结论: 1.正数的原码=反码=补码 2.负数的反码=在其原码的基础上, 符号位不变,其余各个位取反 负数的补码=在反码的基础上+1 负数的补码=在原码的基础上, 符号位不变, 其余各位取反, 最后末位 ...
- 计算机组成原理:原码,补码,反码,移码
无符号数 寄存器的位数反映和决定无符号数的表示范围 比如八位的寄存器就只能储存十进制的0-255 有符号数 机器数与真值 在计算机当中没有硬件表示小数点的位置,而小数点的位置是我们自己约定的, 小数的 ...
- 计算机组成原理——关于原码、补码、移码运算及浮点数运算的总结
计算机组成原理--关于原码.补码.移码运算及浮点数运算的总结 一.数的表示法 1.1 原码 [X]原码={X0≤X≤2n−1−12n−1+∣X∣−(2n−1−1)≤X≤0[X]_{原码}= \left ...
- 真值 原码 补码 反码 移码
真值 原码 补码 反码 移码 真值是相对与其它四种的数字类型 书写中一般表示的数叫做"真值" 机器中编码表示的数 "机器数||机器码<原码 补码 反码 移码 > ...
- c语言原码 补码 反码,C语言 原码--反码--补码
//原码,反码,补码 #include #include //数值的表示方法--原码.反码和补码 //原码:最高位为符号位,其余各位为数值本身的绝对值 //反码: //正数:反码与原码相同 //负数: ...
- java反码补码原码作用_java原码补码反码关系解析
本文为大家解析了java原码补码反码的关系,供大家参考,具体内容如下 原码:不管源数据是十进制还是十六进制,统统将数字转成二进制形式 反码:把原码的二进制统统反过来,0变成1,1变成0 补码:负数的反 ...
- 原码 补码 反码的转换
正数 : 原码 补码 反码都相同 机器数:+1001010 原码:01001010 (符号位 正数为0) 补码:01001010 (补码与原码相同) 反码:01001010 (反码与原码相同) 负数 ...
- 原码 补码 反码 移码
目录 原码 反码 补码 移码 转换 原码 补码 反码 原码 0和1组成 正负用0和1表示(添加在最前面) 真值转原码 转化符号位 数值位十进制转二进制 对于十进制数 233(正数) 正数->符号 ...
最新文章
- arcims安装配置教程
- Linux0.11 中对地址的管理
- python【蓝桥杯vip练习题库】ADV-301 字符串压缩
- C#正则表达式整理备忘
- 索引使用的好处与坏处(Oracle测试)
- ubuntu 将某个目录下的文件复制到_命令行 将多个特定文件从一个文件夹复制到另一个文件夹...
- python linux 优化_Python 代码性能优化技巧
- Matlab归一化函数(mapminmax)
- 我们的电梯调度算法的独到之处
- 计算机iis配置具体步骤,IIS配置运行ASP网站配置与注意事项
- mysql tddl_TDDL思考总结
- dota2服务器何时修复,《DOTA2》10月10日更新:服务器改善bug饰品修复
- Rstudio中修改工作路径的三种方法
- bessel 函数乘以指数函数的积分
- 移动硬盘 计算机里不显示盘符,移动硬盘插在电脑上不显示盘符是怎么回事啊?...
- Python 网络爬虫微实战 (爬虫爬取贴吧消息词云显示) 超详解
- 灵性图书馆:好书推荐-《巫士唐望的教诲》
- Nacos只发现不注册
- SCI-HUB客户端(文献神器V4.0)——下载文献如此简单
- Android推特图片保存路径,如何将twitter的URL内容(tweet,user,comment,…)添加到我的android应用程序...
热门文章
- Unity3D基础17:物体中心点与物体旋转
- 莫比乌斯函数(bzoj 1101: [POI2007]Zap)
- 贪心算法 (Greedy Algorithm)
- python opencv 利用分水岭算法实现对物体的分割 图文详细注释版 以分割官网提供的硬币为例
- (暴力求解)百钱买百鸡问题升级版
- [PyTorch] 记录一次PyTorch版本更新
- [Python] 最常见括号()、[]、{}的区别
- python测试系列教程 —— 单元测试unittest
- matlab2c使用c++实现matlab函数系列教程-sign函数
- ---单元数组-创建获取重塑单元数组----求解形如A(B)