繁体   English   中英

如何在C中获取无符号8位类型的最高有效位

[英]How to get the most significant bit of an unsigned 8-bit type in C

我正在尝试获取C中无符号8位类型的最高有效位。

这就是我现在正在尝试做的事情:

uint8_t *var = ...;
...
(*var >> 6) & 1

这是正确的吗? 如果不是,那会是什么?

要从uint8_t指针指向的存储器中获取最高有效位,您需要移位7位。

(*var >> 7) & 1

屏蔽位的最标准/正确方法是使用形式为1u << bit的可读位掩码。 任何在代码中发现1u << n C程序员都将知道它是位掩码-因此它是自记录代码。

因此,如果您想要数字7,则可以这样写

*var & (1u << 7)

u后缀对于坚固的代码很重要,因为您要避免意外地将隐式提升为带符号的类型。

另一种选择是简单地应用位掩码并检查结果值:

*var & 0x80u // 1000 0000

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM