Swift-整数N与M位置调整

题目:给定两个32位的整数N与M,以及表示比特位置的i与j。编写一个方法,将M插入N,使得M从N的第 j 位开始,到第 i 位结束.
假定从 j 到 i 位足以容纳M,也即若M = 10011, 那么 j 和 i 之间至少可容纳5个位。 例如, 不可能出现 j = 3 和 i = 2的情况,因为第3位和第2位之间放不下M.

核心代码:
<pre><code>` func updateBits(n:Int,m:Int,i:Int,j:Int) -> Int {

    // 设置掩码为 11100011
    let allOnes:Int = ~0
    
    let left = allOnes << (j + 1)
    
    let right = ((1 << i) - 1)
    
    let mask = left | right
    
    let n_clear = n & mask
    let m_shifted = m << i
    
    return n_clear | m_shifted
    
}`</code></pre>

测试代码:
<pre><code>var updateResult:Int = bitManager.updateBits(n: 1024, m: 19, i: 2, j: 6) print("FlyElephant---最后的结果:\(updateResult)")</code></pre>

FlyElephant.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容