【补码表示】为什么定点小数的 |
您所在的位置:网站首页 › 0是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 当然也有这样的理解 http://bbs.kaoyan.com/t2806127p1 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |