C语言中16位整数按位取反的正确实现方式咨询
16位整数按位取反的实现方案
以下代码无法按预期对16位整数执行按位取反操作:
#include <stdint.h> typedef uint16_t U16; U16 myNum = 0xffff; ~myNum // 结果为0xffff0000,而非预期的0x0000
这是因为C语言会在执行取反操作前将16位整数提升为32位整数。
实现16位按位取反有哪些可选方案?常见的有以下两种:
~myNum & 0xffff // 或 ((U16)~myNum)
但这两种写法似乎容易出错或引发误解。如果想要更简洁的16位取反实现,是否没有更好的办法?
内容的提问来源于stack exchange,提问作者beyarkay
相关产品推荐
相关产品推荐

