A/B 向上取整的方法

2016-01-29 12:14 70 1 收藏

A/B 向上取整的方法,A/B 向上取整的方法

【 tulaoshi.com - C语言心得技巧 】

A/B 向上取整的方法
作者:孙雪青

1. 问题

A,B都是整数并且 A>1, B>1

求 ┌ A/B ┐ 即 A/B 的上取整。
当 A/B 整除,往上取整返回值 为 A/B。
当 不整除,返回值是 int(A/B) + 1

这个算法的一个应用:如果你有一个动态增长的缓冲区,增长的步长是 B,
某一次缓冲区申请的大小是 A,这个时候,就可以用这个算法,计算出缓冲区的一个合
适大小了,正好可以容纳A,并且不会过于得多,多余部分不会比B多。

2. 方法

int( (A+B-1)/B )

3. HUNTON 的证明

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com)

上取整用UP表示
由于A>1、B>1,且A、B都是整数,所以可以设A=NB+M
其中N为非负整数,M为0到B-1的数,则
A/B = N + M/B
(A+B-1)/B = N + 1 + (M - 1)/B;
当M为0时,
UP(A/B) = N,
int((A+B-1)/B) = N + int(1 - 1/B) = N
当M为1到B-1的数时,0 <= M-1 <= B-2
UP(A/B) = N + 1,
int((A+B-1)/B) = N + 1 + int((M-1)/B) = N + 1
所以对A>1、B>1的整数A、B都有:
UP(A/B) = int((A+B-1)/B)

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com)


附录:
CSDN 的原始帖子 http://expert.csdn.net/Expert/TopicView.asp?id=1937887
CSDN 的 FAQ http://expert.csdn.net/Expert/FAQ/FAQ_Index.asp?id=171848

作者信息:
孙雪青 (网名 alphasun,shaking,炮炮;主页 http://alphasun.betajin.com/)

来源:https://www.tulaoshi.com/n/20160129/1485188.html

延伸阅读
针灸根据我们人体的穴位来进行取穴,然后对穴位进行刺激,通过这种方法来帮助我们治疗各种疾病。因此,针灸怎么取穴是非常重要的,我们在那个穴位进行施针,针灸的角度、深度和方向都是我们需要知道的。下面我们就一起来看看吧。 关注养生的朋友们应该都知道针灸疗法治疗疾病的吧。但是你知道针灸疗法是怎样取穴的吗?其实,不用解释...
标签: 愚人节 节日
愚人节整人整蛊方法:点歌 首先需要准备的材料有饭盆或搪瓷脸盆以及电话。然后大电话给你要整的人,接通后按照下面的话来说:这里是音乐电台,有一位X先生/小姐要为Y先生/小姐点一首歌,如果您想听的话,请拨#号键收听。等到按了之后就说谢谢,歌曲是动力火车的《当》,请仔细收听。然后敲一下事先准备好的打击物,只敲一下,发出“当”的一声...
炎炎夏日,最爽的莫过于来杯加冰块的饮料降降暑!市面上各式各样的冰格琳琅满目,但是每次取冰块的时候貌似都不是很方便哦!这款抽拉式的冰格绝对的方便,但就是每次的制冰率不是很高,一次也就七八块吧!
标签: 养生 健康
    引体向上怎么做?医学专家表示引体向上对脊柱疾病有益,而引体向上也是健美界推崇的锻炼方式,很多人都在跟7次世界奥林匹亚先生健美大赛冠军、超级动作片影星阿诺德·施瓦辛格学引体向上。然而,普通人毕竟不是施瓦辛格,测验过关、出点肌肉是比较现实的需求。     引体向上对脊柱疾病有益     引体...
先看下面的程序: 代码如下: void main() {     int a = 100;     int *ap = &a;     printf("%p\n",&a);//输出:002AF744     printf("%p\n",ap);//输出:002AF744     printf("%d\n",*ap);//输出:100     printf("%p\n",&ap);//输出...

经验教程

81

收藏

5
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部