[C++] 24951 -- 二進制插入


例題描述

有兩個32位整數nm,請編寫算法將m的二進制數位插入到n的二進制的第j到第i位,其中二進制的位數從低位數到高位且以0開始。

給定兩個數int nint m,同時給定int jint i,意義如題所述,請返回操作後的數,保證n的第j到第i位均爲零,且m的二進制位數小於等於i-j+1

示例1:

  • 輸入
    1024,19,2,6
  • 輸出
    1100

解題思路

  • m:1024:10000000000
  • n:19 : 10011

要把n的二進制值插入m的第j位到第i位,只需要把n先左移j位,然後再進行或運算(|)即可。

  • m: 10000000000
  • n: 00001001100
  • |:10001001100

代碼實現

class BinInsert {
public:
    int binInsert(int n, int m, int j, int i) {
        m <<= j;
        return n | m;
    }
};

https://www.nowcoder.com/practice/30c1674ad5694b3f8f0bc2de6f005490?tpId=8&&tqId=11019&rp=1&ru=/activity/oj&qru=/ta/cracking-the-coding-interview/question-ranking

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章