有关位运算的一则问题

zengkun100 zengkun100 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
今天编程时用到了这几个宏
#define MAKEWORD(a, b) ((WORD)(((BYTE)(a)) | ((WORD)((BYTE)(b))) << 8))
#define MAKELONG(a, b) ((LONG)(((WORD)(a)) | ((DWORD)((WORD)(b))) << 16))
#define LOWORD(l) ((WORD)(l))
#define HIWORD(l) ((WORD)(((DWORD)(l) >> 16) & 0xFFFF))
#define LOBYTE(w) ((BYTE)(w))
#define HIBYTE(w) ((BYTE)(((WORD)(w) >> 8) & 0xFF))

我想问一下那个HIBYTE(w)为什么要这样写。LOBYTE(w)直接拷贝w的低字节就行了,很好理解。如果要拷贝高字节的话,w右移8位不就可以了吗?为什么还要和0xFF与一下呢?一个BYTE类型的值和0xFF与好像是不变的吧!
...全文

相关推荐

评论 15
收藏 已收藏
分享
返回顶部
zengkun100
C++ 语言 65,214 成员 250,514 内容