二进制bit位的插入(c++,每日一练)

旧城等待, 2023-02-17 11:04 36阅读 0赞

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2FtYmlndW91c19f_size_16_color_FFFFFF_t_70

将m的二进制数位插入到n进制的第j到第i位,二进制的位数从低位到高位,且从0开始。
以下是代码

  1. class BinInsert {
  2. public:
  3. int binInsert(int n, int m, int j, int i) {
  4. int k=n;
  5. int o=j;
  6. while(i>0)
  7. {
  8. k=k>>1;
  9. k=k<<1;
  10. i--;
  11. }
  12. while(o>0)
  13. {
  14. m=m<<1;
  15. o--;
  16. }
  17. k=k|m;
  18. while(j>0)
  19. {
  20. k=k|(n&1);
  21. j--;
  22. }
  23. return k;
  24. }
  25. };

我先把k的前i位数位用位操作符置为0;

然后再把m的数位向左移j位,

最后让k和m|以下,

最后补上j位之前的比特位,就大功告成了。

发表评论

表情:
评论列表 (有 0 条评论,36人围观)

还没有评论,来说两句吧...

相关阅读

    相关 每日c++)57. 插入区间

    给你一个 无重叠的 ,按照区间起始端点排序的区间列表。 在列表中插入一个新的区间,你需要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间)。 示例 1: 输