<!-- flowchart 箭头图标 勿删 -->
<svg style="display: none;">
<path d="M5,0 0,2.5 5,5z" id="raphael-marker-block" stroke-linecap="round" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></path>
</svg>
<h2><a id="_unsigned_int_reverse_bitunsigned_int_value_value_0"></a>题目一 unsigned int reverse_bit(unsigned int value); 这个函数的返回值value的二进制位模式从左到右翻转后的值。</h2>
<p>如:<br>
在32位机器上25这个值包含下列各位:<br>
00000000000000000000000000011001<br>
翻转后:(2550136832)<br>
10011000000000000000000000000000<br>
程序结果返回:<br>
2550136832</p>
<ul>
<li>分析<br>
首先需要十进制转化为二进制<br>
然后需要将其逆置</li>
<li>思路<br>
思路一: 将十进制转化为32位二进制放入数组中,然后逆置数组,再将二进制转化为十进制<br>
缺点: 二进制转十进制时可能会溢出<br>
思路二:将十进制转化为32位二进制, 通过 按位或 (|)操作符,将其对应位数二进制数转化<br>
00000000000000000000000000001111 ->11110000000000000000000000000000</li>
<li>实现<br>
第一种:<pre class="blockcode"><code class="prism language-c"><span class="token keyword">unsigned</span> <span class="token keyword">int</span> <span class="token function">reverse_bit</span><span class="token punctuation">(</span><span class="token keyword">unsigned</span> <span class="token keyword">int</span> value<span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token keyword">int</span> bitArr<span class="token punctuation">[</span><span class="token number">32</span><span class="token punctuation">]</span><span class="token punctuation">;</span>
<span class="token keyword">int</span> temp<span class="token punctuation">;</span>
<span class="token keyword">int</span> mut <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span>
<span class="token keyword">for</span> <span class="token punctuation">(</span><span class="token keyword">int</span> i <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> i <span class="token operator"><</span> <span class="token number">32</span><span class="token punctuation">;</span> i<span class="token operator">++</span><span class="token punctuation">)</span>
<span class="token punctuation">{</span>
bitArr<span class="token punctuation">[</span>i<span class="token punctuation">]</span> <span class="token operator">=</span> value <span class="token operator">&</span> <span class="token punctuation">(</span><span class="token number">1</span> <span class="token operator"><<</span> i<span class="token punctuation">)</span> <span class="token operator">?</span> <span class="token number">1</span> <span class="token punctuation">:</span> <span class="token number">0</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token keyword">for</span> <span class="token punctuation">(</span><span class="token keyword">int</span> i <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> i <span class="token operator"><</span> <span class="token punctuation">(</span><span class="token number">32</span> <span class="token operator">/</span> <span class="token number">2</span><span class="token punctuation">)</span><span class="token punctuation">;</span> i<span class="token operator">++</span><span class="token punctuation">)</span>
<span class="token punctuation">{</span>
temp <span class="token operator">=</span> bitArr<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">;</span>
bitArr<span class="token punctuation">[</span>i<span class="token punctuation">]</span> <span class="token operator">=</span> bitArr<span class="token punctuation">[</span><span class="token number">31</span> <span class="token operator">-</span> i<span class="token punctuation">]</span><span class="token punctuation">;</span>
bitArr<span class="token punctuation">[</span><span class="token number">31</span> <span class="token operator">-</span> i<span class="token punctuation">]</span> <span class="token operator">=</span> temp<span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token keyword">for</span> <span class="token punctuation">(</span><span class="token keyword">int</span> i <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> i <span class="token operator"><</span> <span class="token number">32</span><span class="token punctuation">;</span> i<span class="token operator">++</span><span class="token punctuation">)</span>
<span class="token punctuation">{</span>
mut <span class="token operator">+</span><span class="token operator">=</span> bitArr<span class="token punctuation">[</span>i<span class="token punctuation">]</span> <span class="token operator">*</span> <span class="token function">pow</span><span class="token punctuation">(</span><span class="token number">2</span><span class="token punctuation">,</span>i<span class="token punctuation">)</span><span class="token punctuation">;</span |
|