码迷,mamicode.com
首页 > 其他好文 > 详细

聊一下补码1

时间:2016-06-21 01:11:01      阅读:301      评论:0      收藏:0      [点我收藏+]

标签:

对于补码一直只知道应用方法,就是正数的补码是其本身,负数的补码是其对应正数的每一位取反后加一,这样减法操作就可以用加法来实现。但是一直不太明了其原理,今天就来掰开揉碎了聊一下。 

补码源自于数学上补数的概念和方法,所以理解补码必须先理解补数。

 

补数

 

补数(radix comletment)的定义:有一个以b为基数,位数为n的数字y,y的补数即是b的n次方减去y。例如,基数是10,三位数123的补数就是877(1000-123)。

 

缩减基数补数(diminished radix complement)的定义:b的n次方减1减y。例如,基数是10,123的缩减基数补数就是876(1000-1-123)。

 

为什么有个缩减基数补数呢,因为更方便计算。从数学上可以证明b的n次方减1减y可以这样得到,y的每一位数被b-1减去。例如上面的例子,9(10-1)-1,9-2,9-3可以分别得到y的缩减基数补数的百位,十位和个位。至于如和证明,可以自行google。

 

减法的加法能实现原理

 

用加法实现减法,可以有两种方法。

第一种,用x的缩减基数补数加上y得到x-y的缩减基数补数。

技术分享


第二种,x加上y的补数可以得到x-y的值。

 技术分享

技术分享

待续。。。

 

 

本人水平有限,但是欢迎指正交流。

如果你觉得有点意思,欢迎关注 悟空的小车库。

技术分享

聊一下补码1

标签:

原文地址:http://www.cnblogs.com/wukongjiuwoa/p/5602270.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!