内存对齐#define _INTSIZEOF(n) ((sizeof(n)+sizeof(int)-1)&~(sizeof(int) - 1) ) .
来源:互联网 发布:ubuntu如何修改用户名 编辑:程序博客网 时间:2024/05/16 04:50
对于两个正整数 x, n 总存在整数 q, r 使得
x = nq + r, 其中 0<= r <n //最小非负剩余
q, r 是唯一确定的。q = [x/n], r = x - n[x/n]. 这个是带余除法的一个简单形式。在 c 语言中, q, r 容易计算出来: q = x/n, r = x % n.
所谓把 x 按 n 对齐指的是:若 r=0, 取 qn, 若 r>0, 取 (q+1)n. 这也相当于把 x 表示为:
x = nq + r', 其中 -n < r' <=0 //最大非正剩余
nq 是我们所求。关键是如何用 c 语言计算它。由于我们能处理标准的带余除法,所以可以把这个式子转换成一个标准的带余除法,然后加以处理:
x+n = qn + (n+r'),其中 0<n+r'<=n //最大正剩余
x+n-1 = qn + (n+r'-1), 其中 0<= n+r'-1 <n //最小非负剩余
所以 qn = [(x+n-1)/n]n. 用 c 语言计算就是:
((x+n-1)/n)*n
若 n 是 2 的方幂, 比如 2^m,则除为右移 m 位,乘为左移 m 位。所以把 x+n-1 的最低 m 个二进制位清 0就可以了。得到:
(x+n-1) & (~(n-1))
x = nq + r, 其中 0<= r <n //最小非负剩余
q, r 是唯一确定的。q = [x/n], r = x - n[x/n]. 这个是带余除法的一个简单形式。在 c 语言中, q, r 容易计算出来: q = x/n, r = x % n.
所谓把 x 按 n 对齐指的是:若 r=0, 取 qn, 若 r>0, 取 (q+1)n. 这也相当于把 x 表示为:
x = nq + r', 其中 -n < r' <=0 //最大非正剩余
nq 是我们所求。关键是如何用 c 语言计算它。由于我们能处理标准的带余除法,所以可以把这个式子转换成一个标准的带余除法,然后加以处理:
x+n = qn + (n+r'),其中 0<n+r'<=n //最大正剩余
x+n-1 = qn + (n+r'-1), 其中 0<= n+r'-1 <n //最小非负剩余
所以 qn = [(x+n-1)/n]n. 用 c 语言计算就是:
((x+n-1)/n)*n
若 n 是 2 的方幂, 比如 2^m,则除为右移 m 位,乘为左移 m 位。所以把 x+n-1 的最低 m 个二进制位清 0就可以了。得到:
(x+n-1) & (~(n-1))
转自:http://blog.csdn.net/swell624/article/details/3210779
- 内存对齐#define _INTSIZEOF(n) ((sizeof(n)+sizeof(int)-1)&~(sizeof(int) - 1) )
- 内存对齐#define _INTSIZEOF(n) ((sizeof(n)+sizeof(int)-1)&~(sizeof(int) - 1) ) .
- 内存对齐#define _INTSIZEOF(n) ((sizeof(n)+sizeof(int)-1)&~(sizeof(int) - 1) )
- 内存对齐#define _INTSIZEOF(n) ((sizeof(n)+sizeof(int)-1)&~(sizeof(int) - 1) )
- #define _INTSIZEOF(n) ((sizeof(n)+sizeof(int)-1)&~(sizeof(int) - 1) ) 的解释
- ((sizeof(n)+sizeof(int)-1)&~(sizeof(int)-1))
- 计算字节对齐的地址 ((sizeof(n)+sizeof(int)-1)&~(sizeof(int)-1))
- [收集]内存对齐、sizeof、#pragma pack(n)
- sizeof(int)
- #define MenuWhat(n) {(U8 **)n,(sizeof(n)/sizeof(U8 *))}
- 内存地址对齐 &amp; sizeof
- 内存对齐 _INTSIZEOF(n)
- C语言之sizeof详解 eg: int i = 10; printf("sizeof(i++) is: %d\n",sizeof(++i));
- 内存对齐,program once(n) 及sizeof(结构体)
- memset(a, -1, sizeof(int)) 的理解
- memset(a, -1, sizeof(int)) 的理解
- sizeof(int)*nCount
- sizeof(int/long/...)
- 第三周--项目一调试程序
- MacBook 蓝牙键盘的匹配
- 实时时钟RTC
- (水)hdu1212,1753用来练习java大数
- 黑马程序员-函数
- 内存对齐#define _INTSIZEOF(n) ((sizeof(n)+sizeof(int)-1)&~(sizeof(int) - 1) ) .
- android智能手机项目开发小结
- 公交算法2
- SQL 一列转一行
- css 解决方案-3px bug 和左浮动右侧顶部对齐
- jhost邀请码-持续更新
- MyEclipse修改用户名和密码
- Hadoop安全模式的理解
- setAttribute()的兼容性