c – 函数接受两个参数,一个字节和一个位字段,并返回字节中字段的值
作者:互联网
我在网上发现了一些执行此任务的代码:
byte = byte >> field;
byte = byte & 0x01;
return(byte);
但是,我不明白为什么我们不能这样做:
return(byte & field);
这会有用吗?为什么或者为什么不?有更好的实施吗?
解决方法:
第一个相当于:
return (byte >> field) & 0x01;
它真正做的是移位到位置字段,如果该位置位则返回1,否则返回0.
你提出的那个是不正确的,因为它没有转移到指定字段的偏移量.例如,字节& 5没有任何意义.
该函数也可以这样写:
return byte & (1 << field);
当然,如果你打算通过1<< 5,而不是5,你可以按自己的方式写. 我想字段是一个数字,表示我们感兴趣的位的位置,因此对于单个字节,它将在0..7的范围内.
标签:c-3,bit-fields,c 来源: https://codeday.me/bug/20190903/1796682.html