offsetof介绍
offsetof用于查找结构体和联合体中成员位置的偏移量,以字节为单位来返回
#include <stdio.h>
#include <stddef.h> /* offsetof */
struct foo
{
char a;
char b[10];
char c;
};
int main ()
{
printf ("offsetof(struct foo,a) is %d\n",(int)offsetof(struct foo,a));
printf ("offsetof(struct foo,b) is %d\n",(int)offsetof(struct foo,b));
printf ("offsetof(struct foo,c) is %d\n",(int)offsetof(struct foo,c));
return 0;
}
结果
实现offsetof
#define OFFSETOF(struct_name,member_name) (size_t)&(((struct_name*)0)->member_name)
用宏交换整数的奇偶位
思路
1、先把奇数位全部拿出(整数按位与0101 0101 0101 0101 0101 0101 0101 0101),再把偶数位全部拿出(整数按位与1010 1010 1010 1010 1010 1010 1010 1010 )
2、奇数位全部向左移一位,偶数位置全部向右移动一位
3、最后再按位或
按位与、按位或、按位取反、左移、右移总结表
代码实现
#define SWAP(n) ((((n)&0x55555555)<<1)|(((n)&0xaaaaaaaa))>>1)
0x55555555 等于 0101 0101 0101 0101 0101 0101 0101 0101
这个博客如果对你有帮助,给博主一个免费的点赞就是最大的帮助❤
欢迎各位点赞,收藏和关注哦❤
如果有疑问或有不同见解,欢迎在评论区留言哦❤