首先了解一下原码,反码,补码的概念

原码

原码的表示方法:


简单来说就是,在机器中我们使用0和1来区分一个数的符号,用0来表示正数,用1来表示负数。而原码表示就是将一个数绝对值的二进制表示出来后根据是正数还是负数在前面加0或1表示数的符号。这里注意一点,在定点小数中,原码是不能表示出-1这个值的

反码

反码的表示方法


简单易懂一些的话其实就是如果是正数,X的反码就等于原码,如果是负数,将X的数值位全部取反

补码



对求一个数的补码有一个简单的口诀,若X是正数,则X的补码等于原码,若X是负数,X的补码就是在求出原码的基础上数值位全部取反后在最后一位加1。

机器数表示范围

根据上面的定义可以知道,原码和反码对于0有两种表示方法
原码中
[+0] = 0.0000,[-0] = 1.0000
反码中
[+0] = 0.0000,[-0] = 1.1111
补码中
[+0]=[-0]=0.0000
这里可以知道,在表示数据的时候,补码比原码少了一个-0,而由于表示数据所用的位数是一样的,也就是能表示的整数的个数不会变,所以补码会比原码和补码多表示一个数

对于定点整数

设位数一共为8位
原码表示范围为 -127-127,即1111 1111~0111 1111
反码表示范围为 -127-127,即1000 0000~0111 1111
补码表示范围为 -128-127,即1000 0000~0111 1111
我们可以尝试求一下-128的原码,但可以发现7位二进制表示不出来,必须得用8位二进制表示,但这样符号位就被占用了。但由于上面说的补码比原码和补码少一个0的表示方法,这就让补码多了一个10000000来表示其他的数,这里具体的细节我也不是很懂@_@,但可以这样记吧,-1到-127已经有对应的原码和补码了,所以也会有对应的补码,而10000000首位是1代表负数,不能和其他数的表示起冲突所以就是-128了。由此,补码可以表示128个负数,1个0以及127个负数共256个数

对于定点小数

还是设位数一共8位
原码表示范围为1.111 1111 ~0.111 1111,即-127/128到127/128
反码表示范围为1.000 0000~0.111 1111,即-127/128到127/128
补码表示范围为1.000 0000~0.111 1111,即-1到127/128
在这里原码和反码都好理解,就是补码会有一个问题,为什么补码会有一个1.000 0000而且居然对应的值是-1,也就是说如果小数用补码表示的话最小值是-1。这里如果用一开始说的取反加一你会发现根本不是这个值。之后才知道取反加一靠的是原码,但看前面原码的定义公式你会发现原码根本表示不了定点小数-1,原码所能表示的是定点整数-1,定点小数-1这里严谨一点的话其实是-1.0。
这里要求定点小数-1.0的补码的话就要用到上面的补码定义公式了(要不然我怎么会贴hhh),由公式可知,-1.0的补码为2+X = 2-1.0 = 1.000 0000
当然也有这样的理解

总结:由于补码表示0的唯一性,补码比原码少一个-0的表示,多一个-1的表示以及负整数表示范围多了一个-128
PS:主要是把自己最近碰到的问题写一下让自己记牢一些。其实如果把上面贴的几个公式吃透的话这些问题根本不会有的orz,注意对比原码反码补码边界的取值你会发现其实说的就是这些东西orz

参考:

http://bbs.kaoyan.com/t2806127p1

【补码表示】为什么定点小数的-1补码表示为1.0000以及补码表示范围问题相关推荐

  1. (原码反码补码的计算)在一个8位的二进制的机器中,补码表示的整数范围是从_(1)_(小)到_(2)_(大)。这两个数在机器中的补码表示为_(3)_(小)到_(4)_(大)。数0的补码为_(5)_。

    https://blog.csdn.net/hanhanwanghaha宝藏女孩 欢迎您的关注! 欢迎关注微信公众号:宝藏女孩的成长日记 如有转载,请注明出处(如不注明,盗者必究) 目录 题目 分析过 ...

  2. 定点补码加减法运算_计算机相关问题:谈谈我眼中的补码

    导读:补码是如何产生的.计算机如何表示负数. 1.前提认知 (1)计算机中只有加法器,加减法使用的都是加法器,同时计算机通过加法器左移累加实现乘法运算.右移累减实现除法运算. (2)补码是一种编码格式 ...

  3. 补码原码转换c语言代码,c/c++原码反码补码原理 以及进制转换

    1首先了解 低字节位 和高字节位 看图 2字节在内存的排列方式//int num = 010; //0开头代表 8禁止 //("%d",num); //所以打印的是8 int nu ...

  4. 2.2.1 定点数的表示(无符号与有符号数、定点小数和整数、原码、反码、补码、移码)

    文章目录: 1.无符号数和有符号数 2.机器数的定点表示 (1)定点小数 (2)定点整数 3.原码.反码.补码.移码 1.无符号数和有符号数 无符号数:指整个机器字长的全部二进制位均为数值位,没有符号 ...

  5. 1补码 2补码_8085微处理器中8位数字的1和2的补码

    1补码 2补码 1的8位补码 (1's compliment of 8 bits number) Problem statement: 问题陈述: To perform 1'scompliment o ...

  6. c语言实现补码加减,C语言计算器含二进制数加减原反补码(自己的期末作业)

    用C++6.0编写的计算器,内含整数小数加减乘除.二进制数组加减及求原码补码反码! #include #include int main() { void top(); void no1(),no2( ...

  7. 补码一位乘(布斯公式)

    转自:http://ep02.blog.163.com/blog/static/67655853200821842019254/ 本文适用于补码表示的定点小数或定点整数乘法运算(硬件或软件实现) ◆ ...

  8. 二进制数的补码及运算

    本人研究不深,如有错误请不吝赐教!! 先来个最基本的介绍 参考: https://blog.csdn.net/jdq8576/article/details/82425265 百度百科:https:/ ...

  9. C语言中八进制和16进制怎么表示,原码,反码及补码,C语言按位取反运算符~

    借鉴被人的 C语言中8进制和16进制怎么表示 C语言本身支持的三种输入是: 1. 十进制.比如20,457: 2. 十六进制,以0x开头.比如0x7a: 3. 八进制,以0开头.比如05,0237 所 ...

  10. 计算机中真值的概念,【概念辨析】真值、机器数、原码、反码、补码、变形补码、移码...

    吐槽:最近在学中国大学MOOC的一门课程<计算机系统基础(一)>,初学感觉对这些乱七八糟的码比较纠结,所以写个辨析,希望帮自己理清概念也希望帮到其他初学者.ps:纯属手敲和个人理解,不过有 ...

最新文章

  1. HDU1524(博弈--有向无环图SG函数)
  2. 拖欠水费可能影响个人征信,大家怎么看?
  3. 荐书 | 攻克世纪难题,拒绝领取菲尔兹奖的孤独数学天才的一生
  4. spring cloud 调用接口间歇性返回http 500 - Internal Server Error的错误
  5. UE4 蓝图RandomStreams
  6. 恒大汽车参展车辆竟全都是模型;华为官宣卖车,门店连夜上新摆车...
  7. mysql publishedtime_MySQL数据库中的Date,DateTime,TimeStamp和Time类型
  8. DE13 Finding Particular Solutions to Inhomogeneous ODEs
  9. Hyper-V 激活Windows系统重启后黑屏的解决方法 + 激活方法
  10. Egret入门学习日记 --- 第十九篇(书中 8.8~8.10 节 内容)
  11. mysql中的int(11)到底代表什么意思?
  12. 阿里云国际站代充值个人注册与分销商邀约区别
  13. mfc显示html单元格,HTML/CSS中可直接输数据的表格
  14. div+css静态网页设计web网页设计实例作业 ——中国风的茶文化(4页) web课程设计-HTML网页制作代码
  15. 用python生成纯色图像
  16. HTML圣诞树代码(动态音效)(我非原创作者,原作者是复旦大学的学长,如有侵权请联系)
  17. php编写润平年,【PHP】制作日历
  18. 疯子的匣子_人工智能扮演``疯子''来像孩子一样学习语法
  19. 文章自曝出轨马伊琍真原谅了?
  20. 作为一款读书软件火了11年,书旗用更多免费小说内容赢得网络文学读者喜欢

热门文章

  1. linux ntp时间同步失败,linux下用ntpdate时间同步不成功。
  2. 关于Qt Creater中资源文件和文件路径的记录
  3. ligerui父页面向子页面传值
  4. QT自定义按钮类(自定义图片,形状,点击特效)
  5. mysql报1114错误_mysql插入数据出现error1114 table is full
  6. 阿里云ESC搭建SVN服务端-----实测有效,并补充了一些坑点
  7. Axure 教程 |中级电子商务网站设计
  8. BGP和BGP机房各为什么?优势在哪?
  9. python父亲节祝福_用python祝福父亲节_父亲节送给父亲的祝福语,挑一句话发朋友圈!...
  10. linux wipe命令,如何使用wipefs命令擦除磁盘上的签名