二、解题思路给定两个32位整数n和m,同时给定i和j,将m的二进制数位插入到n的二进制的第j到第i位,保证n的第j到第i位均为零,且m的二进制位数小于等于i-j+1,其中二进制的位数从0开始由低到高。
测试样例:1024,19,2,6
题目链接:
返回:1100二进制插入__牛客网
题目中已经保证n的第j到第i位均为零,且m的二进制位数小于等于i-j+1。
将m和n分别转换成二进制, 发现将m的二进制数位插入到n的二进制的第j到第i位,即将m左移j位后求和(或使用或运算)即为所求。代码非常简单,但是想到使用左移却不容易,可以在以后遇到题目中包含“二进制”时,考虑到移位运算符。
移位运算符三、代码1.左移 <<
最左侧位去掉,最右侧补0。
2.右移 >>
最右侧位去掉,最左侧补符号位(正数补0,负数补1)。
3.无符号右移 >>>
最右侧位去掉,最左侧补0。
import java.util.*;
public class BinInsert {
public int binInsert(int n, int m, int j, int i) {
m<<=j;//m左移j位
return m|n;//或m+n
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)