我输入一个包含无符号32位int的值,我想读取第19位。我该怎么做?
这是我想从以下位置读取的输入:
uint32 Input = u32AHI_DioReadInput();
int x = ???
我尝试使用Input(19)
和input[19]
,但我没有工作,因为第一个是函数,第二个被认为是数组。我知道我应该和一些比特并改变它们,但我只是不知道我该怎么做。
答案 0 :(得分:7)
当您需要读取一个位n
时,将数字向右移动n
个位置,并删除除最后一个位之外的所有位,如下所示:
int x = (Input >> n) & 1;
>> n
将内容向右移n
位; & 1
按位进行" AND" with one(其二进制表示只有最低位设置为1,所有其他位包含零);