首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

c++中cpu使用率解决办法

2012-04-03 
c++中cpu使用率查到一个这个定义,#define Li2Double(x) ((double)((x).HighPart)*4.294967296E9+(double)(

c++中cpu使用率
查到一个这个定义,#define Li2Double(x) ((double)((x).HighPart)*4.294967296E9+(double)((x).LowPart))。
((double)((x).HighPart)*4.294967296E9+(double)((x).LowPart))这个式子是啥意思?

[解决办法]
(x) 可以是个结构体

结构可以是
struct liDouble
{
int HighPart;
int LowPart
}loLiDouble;



((double)((x).HighPart)*4.294967296E9+(double)((x).LowPart))

Li2Double(x) 就是说
double x = ((double)(loLiDouble.HighPart)*4.294967296E9+(double)(loLiDouble.LowPart))

高位执行运算低位相加,合成一个double 值

请问? 你问的CPU使用率和你查到的宏定义有神马联系?




[解决办法]
就是8字节的LARGE_INTEGER结构转成double
4.294967296E9是2的32次方,
乘以4.294967296E9即是左移32位

首先HighPart
00 00 00 00 hh hh hh hh
左移32位后
hh hh hh hh 00 00 00 00
再加上LowPart
hh hh hh hh ll ll ll ll

32位系统不支持64位数
LARGE_INTEGER是结构体,占8字节,不方便显示(打印)出来,要转成单一的基本数据类型,恰好double是8字节

热点排行