c语言打卡

论坛 期权论坛     
匿名小用户   2019-10-20 17:53   44   0
<!-- 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 -&gt;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">&lt;</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">&amp;</span> <span class="token punctuation">(</span><span class="token number">1</span> <span class="token operator">&lt;&lt;</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">&lt;</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">&lt;</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
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:50
帖子:1079
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP