给定两个32位整数n和m,同时给定i和j,将m的二进制数位插入到n的二进制的第j到第i位,保证n的第j到第i位均为零,且m的二进制位数小于等于i-j+1,其中二进制的位数从0开始由低到高。
测试样例:
1024,19,2,6
返回:1100
# -*- coding:utf-8 -*- class BinInsert: def binInsert(self, n, m, j, i): m = m << j return n + m
# -*- coding:utf-8 -*- class BinInsert: def binInsert(self, n, m, j, i): m = m << j return n | m
此题要注意负数的情况!!!代码如下: import java.util.*; public class BinInsert { public int binInsert(int n, int m, int j, int i) { // write code here if(i<j) return 0; int flagm=1; int flagn=1; flagn=flagn<<j; //int count=1; while(flagm!=0){ if((flagm & m)!=0){ n=(n|flagn); } flagn=flagn<<1; flagm=flagm<<1; } return n; } }
class BinInsert { public: int binInsert(int n, int m, int j, int i) { // m左移j位 m <<= j; return n | m; } };
class BinInsert { public: int binInsert(int n, int m, int j, int i) { // write code here return n + (m << j); } };