题目链接在这,看完本篇题解可以点开巩固一下~~~
描述
给定两个32位整数n和m,同时给定i和j,将m的二进制数位插入到n的二进制的第j到第i位,保证n的第j到第i位均为零,且m的二进制位数小于等于i-j+1,其中二进制的位数从0开始由低到高。
测试样例:
1024,19,2,6
返回:1100
解题思路:
n | m |
10000000000 | 10011 |
j i |
题目中已经声明保证插入的二进制数字为0,因此不需要进行判断是否能插入。插入的思路是,将m值右移到n中需要插入的对应位置,插入动作可以使用或操作或者假加法操作。
Java解决问题代码如下:
import java.util.*;
public class BinInsert {
public int binInsert(int n, int m, int j, int i) {
// write code here
m <<= j;
return m | n;
}
}