通行证│用户名: 密码: 验证码: 验证码,看不清楚?请点击刷新验证码 电信网通铁通移动   在线
资源搜索:
热门搜索:Linux VB C语言 PhotoShop Flash TCP/IP
   首页 | 文章 | 软件 | 动画 | 资源 | 励志 | 骗术 | 论坛 | 邮箱 | 会员中心 | 军事 | 科技 | 博客 | 图片 | 商城 | 最新更新 | 800g资源 | 爱心黑客
您现在的位置: 爱国者黑客 >> 资源 >> 程序设计 >> C#语言 >> 数据库编程 >> 文章正文
A/B 向上取整的方法
责任编辑:ncic   更新日期:2007-4-2

  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 的证明

  上取整用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)

  • 上一篇文章:
  • 下一篇文章:
  • 热门文章
    Olldbg常见问题
    汇编语言的艺术(组合语言的艺术)--观
    汇编语言的艺术(组合语言的艺术)--准
    汇编语言的艺术(组合语言的艺术)--基
    汇编语言的艺术(组合语言的艺术)--基
    汇编语言---程式设计 (4)
    虚拟8086模式
    SYS命令使用说明
    javascript + CSS 实现动态菜单显
    推荐文章
    自制Windows XP SP2自动安装光盘
    SQLServer注入工具改进版 v1.02
    使用photoshop CS进行自然美肤
    Photoshop绘制诺基亚手机
    PHOTOSHOP制作秋日之梦
    PHOTOSHOP鼠绘名模王爱萍
    Photoshop制作晶莹飞溅的水珠
    教你用PHOTOSHOP做放大镜
    鼠绘美女及服装修画全过程