LCC的字节对齐 宏
来源:互联网 发布:滤波矩阵 编辑:程序博客网 时间:2024/06/05 20:20
// 用于字节对齐
// A:x+(n-1) 当x、n是正整数时,表达式的值永远是大于n的。
// 当1 =< x =< n 时 n =< x+(n-1) < 2n-1 可以认为 n =< x+(n-1) <= 2n
// 当n+1 < x =< 2n 时 2n < x+(n-1) =< 3n
// 当2n+1 < x =< 3n 时 3n < x+(n-1) =< 4n
// ~B:~(n-1) 当n是2~i次方(i=1,2,3,4),表达式的值永远是n的倍数。 可以通过列出各个位来看,最小的、有值
// 的位大小是n的倍数,小于n的部分都是0
// A & ~B 取各种情况下A的左值
// 两个表达式求& x经过第一个表达式将自己变成大两种情况:1.x<=n 整个表达式 n; 2. x>n
#define roundup(x,n) (((x)+((n)-1))&(~((n)-1)))
直接用代码解释就是
// Function: unsigned long ByteAlign(unsigned long in_uiRequest, unsigned long in_uiAlign,
// unsigned long& out_uiAlignedRequest)
// Decription: 将需要的内存变大小修改成符合字节对齐的大小
// In:
// in_uiRequest: 实际需要的内存
// !只能是正整数
// in_uiAlign: 对齐标准
// !2的i次方 i = 1, 2, 3```
// out:
// out_uiAlignRequest: 符合对齐标的准需求大小
// Algorithm:
// 对齐算法如下:返回值一定是对齐标准的整数倍,当需求大小不是对齐标准整数倍时,用分配(倍数+1)*对齐标准 个字节
bool ByteAlign(unsigned long in_uiRequest, unsigned long in_uiAlign,
unsigned long& out_uiAlignedRequest)
{
if(uiRequest != 0)
{
unsigned long = uiN;
uiN = in_uiRequest / in_uiAlign;
if(in_uiRequest % in_uiAlign)
{
out_uiAlignedRequest = ((uiN+1) * uiAlign)
}
else
{
out_uiAlignedRequest = uiN * uiAlign
}
}
else
{
return false;
}
}
- LCC的字节对齐 宏
- 用于字节对齐的宏
- 字节对齐的探讨
- 字节对齐的问题
- 字节对齐的探讨
- 字节对齐的作用
- 字节对齐的问题
- 字节对齐的处理
- 通俗易懂的字节对齐
- 字节对齐的问题
- 字节对齐的问题
- 字节对齐的规则
- 字节对齐的作用
- 字节的对齐方式
- 字节对齐的讲解
- 字节对齐的计算
- 字节对齐的算法
- 字节的对齐原理
- 曾哥传第三话 村外来客
- C++通讯录程序代码
- 加载图像文件从一个文件夹或JAR文件:使用javax.imageio.ImageIO级阅读图像文件
- 用Javascript获取页面元素的位置
- C++类静态数据成员与类静态成员函数
- LCC的字节对齐 宏
- How to Execute a JavaScript Code on a TWebBrowser Document
- IIS7安装Application Request Routing
- 红豆
- 企业做大的秘笈:知识升级,人才贬值
- 事件与消息区别的经典描述
- "你今天听见《风声》了吗“ 学习无处不在继潜伏后《风声》观后感
- .Net2.0 的线程 ParameterizedThreadStart &BackgroundWorker
- Remoting基本原理及其扩展机制