你如何设置,清除和切换一个位?

你如何设置,清除和切换一个位?

如何在C / C ++中设置,清除和切换?



慕标琳琳
浏览 729回答 3
3回答

神不在的星期二

使用标准C ++库:std::bitset<N>。或Boost版本:boost::dynamic_bitset。没有必要自己动手:#include&nbsp;<bitset>#include&nbsp;<iostream>int&nbsp;main(){ &nbsp;&nbsp;&nbsp;&nbsp;std::bitset<5>&nbsp;x; &nbsp;&nbsp;&nbsp;&nbsp;x[1]&nbsp;=&nbsp;1; &nbsp;&nbsp;&nbsp;&nbsp;x[2]&nbsp;=&nbsp;0; &nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Note&nbsp;x[0-4]&nbsp;&nbsp;valid &nbsp;&nbsp;&nbsp;&nbsp;std::cout&nbsp;<<&nbsp;x&nbsp;<<&nbsp;std::endl;}[Alpha:]&nbsp;>&nbsp;./a.out00010与标准库编译时大小的bitset相比,Boost版本允许运行时大小的bitset。

人到中年有点甜

另一种选择是使用位字段:struct&nbsp;bits&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;int&nbsp;a:1; &nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;int&nbsp;b:1; &nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;int&nbsp;c:1;};struct&nbsp;bits&nbsp;mybits;定义一个3位字段(实际上,它是三个1位字符)。位操作现在变得有点(哈哈)更简单:设置或清除一下:mybits.b&nbsp;=&nbsp;1;mybits.c&nbsp;=&nbsp;0;要切换一下:mybits.a&nbsp;=&nbsp;!mybits.a;mybits.b&nbsp;=&nbsp;~mybits.b;mybits.c&nbsp;^=&nbsp;1;&nbsp;&nbsp;/*&nbsp;all&nbsp;work&nbsp;*/检查一下:if&nbsp;(mybits.c)&nbsp;&nbsp;//if&nbsp;mybits.c&nbsp;is&nbsp;non&nbsp;zero&nbsp;the&nbsp;next&nbsp;line&nbsp;below&nbsp;will&nbsp;execute这仅适用于固定大小的位字段。否则你必须采用之前帖子中描述的比特技巧。
打开App,查看更多内容
随时随地看视频慕课网APP