使用宏交换字节位置和置某位的值

c语言的宏定义有一个坏处同时也是好处,就是不区分类型,因此可以让c可以“动态”地处理输入参数。如下面的操作

//交换字节
#define BSWAP_8(x)  ((x) & 0xff)
#define BSWAP_16(x) ((BSWAP_8(x) << 8) | BSWAP_8((x) >> 8))
#define BSWAP_32(x) ((BSWAP_16(x) << 16) | BSWAP_16((x) >> 16))
#define BSWAP_64(x) ((BSWAP_32(x) << 32) | BSWAP_32((x) >> 32))

//交换两个变量的值
 #define SWAP(a, b) \
(((a) ^= (b)), ((b) ^= (a)), ((a) ^= (b)))

//位操作
#define SET_REG_BIT(reg, bit) do { (reg |= (1 << (bit))); } while (0)
#define CLR_REG_BIT(reg, bit) do { (reg &= ~(1 << (bit))); } while (0)
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,161评论 1 32
  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 11,242评论 6 13
  • 一、温故而知新 1. 内存不够怎么办 内存简单分配策略的问题地址空间不隔离内存使用效率低程序运行的地址不确定 关于...
    SeanCST阅读 7,900评论 0 27
  • 【今天要跟各位分享做事的方法:伯利恒钢铁公司总裁舒瓦普曾会见效率专家艾维,艾维说能帮舒瓦普把他的钢铁公司管理得更好...
    贺小桶阅读 444评论 0 1
  • 这是第三次在这里写关于你的事 每次写都以为会是最后一次 还是老样子每次想你想到不行 会偷偷看你微博有没有更新 会偷...
    咿呀哟_阅读 242评论 0 0