其他分享
首页 > 其他分享> > c – 函数接受两个参数,一个字节和一个位字段,并返回字节中字段的值

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