特殊二进制定点数的简便运算

     特殊二进制定点数的简便运算
在计算机二进制运算逻辑实现中,不能整除的数的除法实现是比较复杂的,往往用了大量的逻辑资源反而达不到需要的效果,例如X/255,如果运用通用的逻辑实现需要用到牛顿迭代做很多次迭代才能达到需要的精度。但是如果我们运用无限循环小数的属性,可以非常简单的实现2n*X/255的运算。为了使演示简单,我们用8位整数,8位小数无符号定点数为例子。

为了容易理解,首先我们以十进制的数为例子,对于一位十进制整数1/9=0.11111111…;
2/9=0.22222222…;
3/9=0.33333333…;
4/9=0.44444444…;
5/9=0.55555555…;
6/9=0.66666666…;
7/9=0.77777777…;
8/9=0.8888888…;
同样对于8位的二进制整数具有同样的性质:
1/255=b00000000.0000000100000001…;
2/255=b00000000.0000001000000010…;
3/255=b00000000.0000001100000011…;

254/255=b00000000.1111111011111110…;
所以对于2n*X/255的运算可以直接把X/255的值按照上面的例子书写,然后左移2n位。

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值