您的位置:首页 > 理论基础

关于计算机中数值的表示的那点小事

2013-09-16 21:54 274 查看
一、

1、数值在2进制中的表示有3种:原码、反码和补码;这里我只记第3种,因为计算机中,数值的表示只用第3种补码,另外两种用网友的话就是科学家没事吃饱了撑的造出来的(只是开个玩笑,根据哲学中存在比有用的原理,相信他们在其他领域一定还是用的);

2、求补码原则:(1)正数补码还是他本身 (2)负数补码,符号位变成1,其他位取负数的绝对值后按位取反再加1 (3)补码中高位进位都直接丢掉

3、补码的原理:

引入:

生活中我们都知道,

 (1)把时钟正拨20分钟和倒拨40分钟结果是一样的

 (2)物体正向旋照90度,和它反向旋转270度是一样的

在举一个数学之美,

(3)50 - 20 = 30; 因为20的补数是80(100-20=80),则50 + 80 = 130,去掉进位1,他们的个位+十位是一样的 (再次感叹数学之美)

这就是补数的美丽,正变换一个过程,就等于逆变换这个过程的补数过程(补数过程自己起的名字,不知道该叫他什么了),还有对我们今天讲的最关键的:减去一个数 == 加上这个数的补数,

PS.忘了提上面中一个的关键字:模;模就是规定当一个数大到什么程度的时候要进位,然后再从头开始,物体旋转,最大只能旋转360度,大到360不能再大了就进位然后再从0开始(哲学上,物极必反的道理啦)。这个极限(物体能表示的最大值再+1)就是我们的模;

再回到我们的计算机上,一个数,为了简便我们规定一个数用8bit存,那么8bit的数最大就是1111,1111 不能再大了,再大就进位然后变成 0000,0000。所以8bit 的极限就是2^8-1+1 = 2^8 (极限这个值是表示不出来的,例如没有360度,因为360度就是0度,始终也没有60分钟,60分钟后又变成0了)

 

4、计算机里面只有加法器没有减法器,所有只能把所有的减法操作都改成加法:所以聪明的科学家就想到了补数这个特性,把所有的定点数都用补数来存;

注意表示的时候,要根据补数的原则(就是那个正数补数是本身......)再变成原始数据;

5、8位的补码能表示的数值范围

由于有符号位,所以补码最大是 0111,1111 = 1000,0000 - 1 =  2^7 -1 = 128 -1 = 127

最小  , 1111,1111 = -(111,1111)= - (1000,0000 - 1)= - (2^-1) = -127

所以补码的数值范围是 -127 ~ +127

6、补码还有一个好处就是 0的表示是唯一的,这一点原码和反码是不具备的。

+0 = 0000,0000

-0 = 1111,1111+1 = (进位丢掉1)0000,0000

二、举例子

还是上面那个例子 50 - 20;

计算机中的处理方式是:

把所有的操作数求补码,运算符当作符号位送给又操作数

所以

(1)+50 的补码,0,011,0010

  (2)-20 的补码,

 原始二进制数  :  1,001,0100

(符号位置1,数值位将2进制数按位取反再+1) = 1,110,1011+1 = 1110,1100

那么50 - 20 = 50+(-20)

在机器中就是[50】补码+【-20】补码 =

  0011,0010

+1110,1100

-------------------

= (1进位丢掉)00011110

(对于高位1,再重复一遍:补码运算进位超过高位就丢掉,不然补码就失去他的良好特性了)

所以50-20 的结果在计算机中的存放的就是 00011110,

但显示的时候,我们还要按照补码的原则,逆变回来(为了变成人们习惯的数)0001,1110 = 30 (tada!!!!! 神奇的补码!!!!)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐