首页 > 试题广场 >

二进制插入

[编程题]二进制插入
  • 热度指数:12058 时间限制:C/C++ 3秒,其他语言6秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解

给定两个32位整数n和m,同时给定i和j,将m的二进制数位插入到n的二进制的第j到第i位,保证n的第j到第i位均为零,且m的二进制位数小于等于i-j+1,其中二进制的位数从0开始由低到高。

测试样例:
1024,19,2,6
返回:1100
思路:
题目保证 j 到i 为0. 那么m左移j位后与 n相加即可
# -*- coding:utf-8 -*-
class BinInsert:
    def binInsert(self, n, m, j, i):
        m = m << j
        return n + m
另一种思路是 m左移j位后与n做或运算
# -*- coding:utf-8 -*-
class BinInsert:
    def binInsert(self, n, m, j, i):
        m = m << j
        return n | m

发表于 2016-08-03 19:31:33 回复(0)

问题信息

难度:
1条回答 19454浏览

热门推荐

通过挑战的用户

查看代码