【发布时间】:2014-02-18 15:14:42
【问题描述】:
我目前正在编写一个代码,我需要一次修改一个 8 字节变量 1 位。我想知道,是否有更方便的方法来编写一个长而简单的十六进制值,例如:
变量 & 0x8000000000000000
我知道我可以将 char 声明为 0x80,然后将其转换为不同的类型并对其进行转换。我只是在寻找更简单、更实用的东西。
【问题讨论】:
我目前正在编写一个代码,我需要一次修改一个 8 字节变量 1 位。我想知道,是否有更方便的方法来编写一个长而简单的十六进制值,例如:
变量 & 0x8000000000000000
我知道我可以将 char 声明为 0x80,然后将其转换为不同的类型并对其进行转换。我只是在寻找更简单、更实用的东西。
【问题讨论】:
您可以使用按位左移运算符使其更清晰:
variable & 1ULL << 63
【讨论】:
好吧,虽然是换班,但是你可以使用arduino的BV()宏,简洁方便:
#define _BV(bit) (1ULL << (bit))
就是这样使用的:
var & (0x8 * _BV(60));
如果您想处理最左边的字节或直接处理:
var & _BV(63);
访问第 63 位。
【讨论】: