【发布时间】:2012-09-14 00:07:15
【问题描述】:
如何编写一个 C 函数来生成一个掩码,该掩码指示 x 中最左边的 1。
例如:0xFF00 -> 0x8000 和 0x6600 -> 0x4000。到目前为止:
int left1(unsigned x){}
我明白了,0xFF00 == 1111 1111 0000 0000..
和0x6600 == 0110 0110 0000 0000.. 但在那之后我很难过。
【问题讨论】:
-
使用位移>>和屏蔽&
-
如果你把它转换成签名的,你能不做 (x
-
在这种情况下你如何处理字节序?最左边的位可能不是高位
-
@RichardJ.RossIII:没有任何进一步的阐述,这意味着“最左边”的意思是“最重要的”,因为我们就是这样写数字的。
标签: c bitwise-operators bitmask