文档章节

WindowsAPI: MulDiv

涂孟超
 涂孟超
发布于 2014/09/26 15:34
字数 269
阅读 2
收藏 0
点赞 0
评论 0

MulDiv(a, b, c) 中的 a、b、c 是三个 Integer, 同时返回一个 Integer.

其计算方式类似于: a * b / c 或 a * b div c, 但也有区别.

//例一: 相同处
var
  a,b,c,n1,n2: Integer;
begin
  a := 4;
  b := 3;
  c := 2;
  n1 := a * b div c;
  n2 := MulDiv(a, b, c);
  ShowMessageFmt('%d : %d', [n1, n2]); {6 : 6}
end;

 
 
 
 
 

 

 

  

//例二: MulDiv 中前两个 32 位整数 a 和 b 相乘后会先得出一个 64 位整数, 这可以尽量使运算不会溢出.
var
  a,b,c,n1,n2: Integer;
begin
  a := MaxInt div 2;
  b := 3;
  c := 2;
  n1 := a * b div c;     {这个运算会溢出}
  n2 := MulDiv(a, b, c); {MulDiv 会算出正确的结果}
  ShowMessageFmt('%d : %d', [n1, n2]); {-536870913 : 1610612735}
end;

 
 
 
 
 

 

 

  

//例三: MulDiv 会自动四舍五入.
var
  a,b,c,n1,n2: Integer;
begin
  a := 1;
  b := 7;
  c := 4;
  n1 := a * b div c;     {这个结果只是截取了整数部分}
  n2 := MulDiv(a, b, c); {MulDiv 会四舍五入}
  ShowMessageFmt('%d : %d', [n1, n2]); {1 : 2}
end;

 
 
 
 
 

 

 

  

//例四: 也有 MulDiv 算不了的, 算不了就返回 -1
var
  n1,n2: Integer;
begin
  n1 := MulDiv(MaxInt, MaxInt, 2);
  n2 := MulDiv(1, 2, 0);
  ShowMessageFmt('%d : %d', [n1, n2]); {-1 : -1}
end;

 
 
 
 
 

 

 

  

本文转载自:http://www.cnblogs.com/del/archive/2009/10/09/1579553.html

共有 人打赏支持
涂孟超
粉丝 12
博文 2004
码字总数 14107
作品 0
深圳
程序员
VC++信息安全编程(13)Windows2000/xp/vista/7磁盘扇区读写技术

有些时候,我们读取磁盘文件,会被hook.我们读到的可能并非实际的文件。 我们直接读取磁盘扇区获取数据。 实现磁盘数据的读写,不依赖WindowsAPI。 void CSectorEdit2000Dlg::OnView(){Upda...

junwong ⋅ 2012/03/09 ⋅ 0

关于控制台中reg命令

在cmd中,我们使用 reg export hklmsoftwaremicrosoftmytree d:1.reg 即可导出注册表项,其中mytree是我手动创建的。 然后我在vs里面调用 WinExec("reg export hklmsoftwaremicrosoftmytree ...

开源中国首席问题男 ⋅ 2015/04/28 ⋅ 1

c++string如何读取在文本中的unicode编码

c++string如何读取在文本中的unicode编码,比如读取文本中的u6C49u5B57,解析成“汉字”,而不是解析成字符串。本人用原生c++,不依赖微软的库和WindowsAPI。对能给出正解的人万分感谢!...

编程老头 ⋅ 2013/05/12 ⋅ 8

[2013.9.6]说说Win7的Aero效果

最近看到别人写的一个例程,就是把控制台弄成了全透明,我把源码下载下来做了研 究。 其实从Vista版本之后,WindowsAPI里面增加了几个函数,用于Aero效果的实现。有 两个最主要的:DwmExtend...

apachecn_飞龙 ⋅ 2014/05/16 ⋅ 0

golang 开发windows应用

闲着无聊又玩go语言找虐。。。——用go开发windows应用程序 想要用go开发windows应用必须先要安装必要的组件: walk集成了很多windows的控件 go get github.com/lxn/walk win是go调用windows...

KelvinQ ⋅ 2015/02/05 ⋅ 0

wxwidgets开发组件制作为ActiveX控件

主要思路: 在MFC中如果要创建wxwidgets 的窗口为MFC窗口的子窗口就要把MFC的窗口封装成wxwindow,即做一个虚拟窗口。同理如果要在wxwidgets上使用MFC窗口并把wxwidgets窗口作为MFC窗口的父窗...

流逝的风 ⋅ 2012/04/29 ⋅ 4

基于VC++6.0 windows程序设计 子窗口输出的诡异问题~~~~~~~~~~!

用C语言调用windowsAPI写界面,遇到了一个很诡异的问题,不知如何解决~所以来向各位大仙请教!!!!! 创建父窗口,大小固定,无最大化按钮: hwnd=CreateWindow(szAppName,szAppCation, W...

ShiningPig ⋅ 2012/04/08 ⋅ 9

windowsAPI GetWindowRect 貌似有问题

求大神不惜赐教,为啥会出现这个问题。我实在窗体拖动的时候去执行这个函数的!

撸红薯 ⋅ 2013/09/28 ⋅ 4

如何使用C#操作WinAPI

Windows API是对Windows操作系统的API函数,在C#中调用Windows API的实质是托管代码对非托管代码的调用。 主要使用的格式就是: using System.Runtime.InteropServices; namespace TestWinA...

王二狗子11 ⋅ 01/08 ⋅ 0

C语言结合windowsApi遍历文件

include "stdio.h" include "string.h" include "windows.h" include "cv.h" include "highgui.h" define LEN 1024...

萧敬 ⋅ 2014/06/06 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

【每天一个JQuery特效】根据可见状态确定是否显示或隐藏元素(3)

效果图示: 主要代码: <!DOCTYPE html><html><head><meta charset="UTF-8"><title>根据可见状态确定 是否显示或隐藏元素</title><script src="js/jquery-3.3.1.min.js" ty......

Rhymo-Wu ⋅ 26分钟前 ⋅ 0

OSChina 周四乱弹 —— 初中我身体就已经垮了,不知道为什么

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @加油东溪少年 :下完这场雨 后弦 《下完这场雨》- 后弦 手机党少年们想听歌,请使劲儿戳(这里) @马丁的代码 :买了日本 日本果然赢了 翻了...

小小编辑 ⋅ 45分钟前 ⋅ 7

浅谈springboot Web模式下的线程安全问题

我们在@RestController下,一般都是@AutoWired一些Service,由于这些Service都是单例,所以并不存在线程安全问题。 由于Controller本身是单例模式 (非线程安全的), 这意味着每个request过来,...

算法之名 ⋅ 今天 ⋅ 0

知乎Java数据结构

作者:匿名用户 链接:https://www.zhihu.com/question/35947829/answer/66113038 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 感觉知乎上嘲讽题主简...

颖伙虫 ⋅ 今天 ⋅ 0

Confluence 6 恢复一个站点有关使用站点导出为备份的说明

推荐使用生产备份策略。我们推荐你针对你的生产环境中使用的 Confluence 参考 Production Backup Strategy 页面中的内容进行备份和恢复(这个需要你备份你的数据库和 home 目录)。XML 导出备...

honeymose ⋅ 今天 ⋅ 0

JavaScript零基础入门——(九)JavaScript的函数

JavaScript零基础入门——(九)JavaScript的函数 欢迎回到我们的JavaScript零基础入门,上一节课我们了解了有关JS中数组的相关知识点,不知道大家有没有自己去敲一敲,消化一下?这一节课,...

JandenMa ⋅ 今天 ⋅ 0

火狐浏览器各版本下载及插件httprequest

各版本下载地址:http://ftp.mozilla.org/pub/mozilla.org//firefox/releases/ httprequest插件截至57版本可用

xiaoge2016 ⋅ 今天 ⋅ 0

Docker系列教程28-实战:使用Docker Compose运行ELK

原文:http://www.itmuch.com/docker/28-docker-compose-in-action-elk/,转载请说明出处。 ElasticSearch【存储】 Logtash【日志聚合器】 Kibana【界面】 答案: version: '2'services: ...

周立_ITMuch ⋅ 今天 ⋅ 0

使用快嘉sdkg极速搭建接口模拟系统

在具体项目研发过程中,一旦前后端双方约定好接口,前端和app同事就会希望后台同事可以尽快提供可供对接的接口方便调试,而对后台同事来说定好接口还仅是个开始、设计流程,实现业务逻辑,编...

fastjrun ⋅ 今天 ⋅ 0

PXE/KickStart 无人值守安装

导言 作为中小公司的运维,经常会遇到一些机械式的重复工作,例如:有时公司同时上线几十甚至上百台服务器,而且需要我们在短时间内完成系统安装。 常规的办法有什么? 光盘安装系统 ===> 一...

kangvcar ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部