天天看点

将一个数的指定位置0或1

<code>#include &lt;stdio.h&gt;  </code>

<code>unsigned </code><code>int</code> <code>set_bit(unsigned </code><code>int</code> <code>num, </code><code>int</code> <code>pos, </code><code>int</code> <code>flag)  </code>

<code>{  </code>

<code>    </code><code>int</code> <code>n = 1;  </code>

<code>    </code><code>n = n &lt;&lt; pos;    </code><code>//将n的第pos位置1,其他全为0  </code>

<code>    </code><code>if</code> <code>(flag == 0)  </code>

<code>    </code><code>{  </code>

<code>        </code><code>num = num&amp;(~n);  </code>

<code>    </code><code>}  </code>

<code>    </code><code>else</code> <code>if</code> <code>(flag == 1)  </code>

<code>        </code><code>num = num | n;  </code>

<code>    </code><code>return</code> <code>num;  </code>

<code>}</code>

调用如下:

<code>int</code> <code>a = 0x10;</code>

<code>//位置从0开始</code>

<code>a = set_bit(a,1,1);</code><code>//将a的第2位,置1,结果为10010即0x12</code>

<code></code>

本文转自Chinayu201451CTO博客,原文链接:http://blog.51cto.com/9233403/1971827 ,如需转载请自行联系原作者