【Java】给定两个32位的整数N与M,以及表示比特位置的i与j。编写一个方法,将M插入N,使得M从N的第 j 位开始,到第 i 位结束。
来源:互联网 发布:淘宝伪造授权书 编辑:程序博客网 时间:2024/05/21 15:41
给定两个32位的整数N与M,以及表示比特位置的i与j。编写一个方法,将M插入N,使得M从N的第 j 位开始,到第 i 位结束。
假定从 j 到 i 位足以容纳M,也即若M = 10011, 那么 j 和 i 之间至少可容纳5个位。 例如, 不可能出现 j = 3 和 i = 2的情况,因为第3位和第2位之间放不下M。
示例:
输入: N = 10000000000, M = 10011, i = 2, j = 6
第一步 将n从j到i的位清零, 需要一个形如11100000111的掩码,其中从j到i为0,然后将n与掩码按位与
第二步 将m左移i位,使之与j和i之间的位对齐
第三步 合并M与N
public class updateBits {int updateBits(int n, int m, int i, int j) {int allOnes = ~0;int left = allOnes << ( j + 1 );int right = ( 1 << i ) - 1;int mask = left | right;int n_cleared = n & mask;int m_shifted = m << i;return n_cleared | m_shifted;}}
0 0
- 【Java】给定两个32位的整数N与M,以及表示比特位置的i与j。编写一个方法,将M插入N,使得M从N的第 j 位开始,到第 i 位结束。
- 9.5位操作(一)——M插入N,使得M从N的第j位开始,到第i位结束
- 给定两个32位的整数n和m,将m插进n的j到i的位置,n其他位置不变
- 将M插入N的二进制i位到j位之间
- 程序员面试金典--面试25之将m的二进制数位插入到n的二进制的第j到第i位
- 已知一个整数N,求另外一个整数M,使得M本身 + M各个位上的数 = N
- 输入两个整数m和n,计算需要改变m的二进制表示中的多少位才能得到n。
- java两种方式实现“将字符串前m位移到字符串的第n位之后”
- 编写一个函数,取一个小数的第n(-10<=n<=16)位,当n大于0时,从小数点位置开始向右取小数部分第n位,当n小于0时,从小数点位置开始向左取整数部分的第n位。
- 二进制N中第i 到 j 元素中的内容用M替换(算法)
- C++ 算法之 输入两个整数m n,求计算需要改变m的二进制表示中的多少位才能得到n
- c语言:输入两个整数m和n,计算需要改变m的二进制表示中的多少位才能得到n
- 计算n位m进制所有整数的算法
- 长度为n的整数数组循环左移右移m位
- 二位数组m*n的鞍点
- 【C】写一个宏将一个数字的奇数位和偶数位交换。实现两个int(32位)整数m和n的二进制表达中,位(bit)不同的个数
- C语言正数和负数循环右移,左移,把某正数的第m位(从0开始)到n位取反
- 求出两个int(32位)整数m和n的二进制表达中,有多少bit位不同
- 关于主动刷新Android系统图库方法总结
- timer实现
- rabbitmq 源码分析1启动脚本
- LCA倍增模板
- 免费VPN
- 【Java】给定两个32位的整数N与M,以及表示比特位置的i与j。编写一个方法,将M插入N,使得M从N的第 j 位开始,到第 i 位结束。
- C/C++内存泄漏及检测
- UVA - 1394 And Then There Was One
- spring setter and constructor注入
- TabLayout、ViewPager和Fragment的多页面滑动
- form.validate
- Android TextView(EditView)文字底部或者中间 加横线
- C# Socket服务器端如何判断客户端断开求解
- windows下禁止使用usb接口进行拷贝