天天看點

将一個數的指定位置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 ,如需轉載請自行聯系原作者