整形除法在程序中的表示

以Java中的数字表示为例

Demo

假设有byte型的数值-5,其二进制表示为1111 1011。现在我们对该数做除法,除法表达式为:-5/2。
按照我起初的想法,只需要对-5右移1位,高位补1。我们用这种方法计算,得到的结果为:1111 1101,但该数实际的值为-3。如果我们用程序计算,得到的结果为-2。

说明

我们希望得到的值为-2。
-2.5======>-2,实际上是一个向上取整的过程。
而我说阐述的对-5右移1位,高位补1,实际上是一个向下取整的过程,-2.5=======>-3。
因此必须建立起向上取整与向下取整的联系。

公式

设有整数i,则UP[x]表示向上取整,DW[x]表示向下取整。则有:UP[x/y]=DW[(x+y-1)/y];

设:x=qy+r,0=< r< y;
则DW[x/y]=q+DW[(r+y-1)/y];
则当r=0,DW[x/y]=q;否则DW[x/y]=q+1。刚好与UP[x/y]的值相等。
通过这种方式完成了整数除法向上取整与向下取整的关联。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值