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

一. 机器数和真值

在学习原码, 反码和补码之前, 需要先了解机器数和真值的概念.

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. 【计算机组成原理】-- 原码,反码,补码,移码整数小数计算

    [计算机组成原理]-- 原码,反码,补码,移码整数小数计算

  3. 计算机基础:原码补码反码计算

    结论: 1.正数的原码=反码=补码 2.负数的反码=在其原码的基础上, 符号位不变,其余各个位取反 负数的补码=在反码的基础上+1 负数的补码=在原码的基础上, 符号位不变, 其余各位取反, 最后末位 ...

  4. 计算机组成原理:原码,补码,反码,移码

    无符号数 寄存器的位数反映和决定无符号数的表示范围 比如八位的寄存器就只能储存十进制的0-255 有符号数 机器数与真值 在计算机当中没有硬件表示小数点的位置,而小数点的位置是我们自己约定的, 小数的 ...

  5. 计算机组成原理——关于原码、补码、移码运算及浮点数运算的总结

    计算机组成原理--关于原码.补码.移码运算及浮点数运算的总结 一.数的表示法 1.1 原码 [X]原码={X0≤X≤2n−1−12n−1+∣X∣−(2n−1−1)≤X≤0[X]_{原码}= \left ...

  6. 真值 原码 补码 反码 移码

    真值 原码 补码 反码 移码 真值是相对与其它四种的数字类型 书写中一般表示的数叫做"真值" 机器中编码表示的数 "机器数||机器码<原码 补码 反码 移码 > ...

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

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

  8. java反码补码原码作用_java原码补码反码关系解析

    本文为大家解析了java原码补码反码的关系,供大家参考,具体内容如下 原码:不管源数据是十进制还是十六进制,统统将数字转成二进制形式 反码:把原码的二进制统统反过来,0变成1,1变成0 补码:负数的反 ...

  9. 原码 补码 反码的转换

    正数 : 原码 补码 反码都相同 机器数:+1001010 原码:01001010 (符号位 正数为0) 补码:01001010 (补码与原码相同) 反码:01001010 (反码与原码相同) 负数 ...

  10. 原码 补码 反码 移码

    目录 原码 反码 补码 移码 转换 原码 补码 反码 原码 0和1组成 正负用0和1表示(添加在最前面) 真值转原码 转化符号位 数值位十进制转二进制 对于十进制数 233(正数) 正数->符号 ...

最新文章

  1. arcims安装配置教程
  2. Linux0.11 中对地址的管理
  3. python【蓝桥杯vip练习题库】ADV-301 字符串压缩
  4. C#正则表达式整理备忘
  5. 索引使用的好处与坏处(Oracle测试)
  6. ubuntu 将某个目录下的文件复制到_命令行 将多个特定文件从一个文件夹复制到另一个文件夹...
  7. python linux 优化_Python 代码性能优化技巧
  8. Matlab归一化函数(mapminmax)
  9. 我们的电梯调度算法的独到之处
  10. 计算机iis配置具体步骤,IIS配置运行ASP网站配置与注意事项
  11. mysql tddl_TDDL思考总结
  12. dota2服务器何时修复,《DOTA2》10月10日更新:服务器改善bug饰品修复
  13. Rstudio中修改工作路径的三种方法
  14. bessel 函数乘以指数函数的积分
  15. 移动硬盘 计算机里不显示盘符,移动硬盘插在电脑上不显示盘符是怎么回事啊?...
  16. Python 网络爬虫微实战 (爬虫爬取贴吧消息词云显示) 超详解
  17. 灵性图书馆:好书推荐-《巫士唐望的教诲》
  18. Nacos只发现不注册
  19. SCI-HUB客户端(文献神器V4.0)——下载文献如此简单
  20. Android推特图片保存路径,如何将twitter的URL内容(tweet,user,comment,…)添加到我的android应用程序...

热门文章

  1. Unity3D基础17:物体中心点与物体旋转
  2. 莫比乌斯函数(bzoj 1101: [POI2007]Zap)
  3. 贪心算法 (Greedy Algorithm)
  4. python opencv 利用分水岭算法实现对物体的分割 图文详细注释版 以分割官网提供的硬币为例
  5. (暴力求解)百钱买百鸡问题升级版
  6. [PyTorch] 记录一次PyTorch版本更新
  7. [Python] 最常见括号()、[]、{}的区别
  8. python测试系列教程 —— 单元测试unittest
  9. matlab2c使用c++实现matlab函数系列教程-sign函数
  10. ---单元数组-创建获取重塑单元数组----求解形如A(B)