Q5.1 Set Bits
来源:互联网 发布:大数据应用发展趋势 编辑:程序博客网 时间:2024/06/10 06:17
Q:
You are given two 32-bit numbers, N and M, and two bit positions, i and j. Write a method to set all bits between i and j in N equal to M (e.g., M becomes a substring of N located at i and starting at j).
EXAMPLE:
Input: N = 10000000000, M = 10101, i = 2, j = 6
Output: N = 10001010100
A:
先将N的第0为到i位保存到ret,不包括第i位, 接下来将N的第0位到第j位置0, 包括第j位。 最后或上(m<<i) | ret。
#include <iostream>#include <vector>using namespace std;void print_binary(int n) {vector<int> bit;int m = 1;int len = 8*sizeof(int);while(len--) {if (n&m) bit.push_back(1);else bit.push_back(0);m <<= 1;}while (!bit.empty()) {cout<<bit.back();bit.pop_back();}cout<<endl;}int update_bits(int n, int m, int i, int j) {int ret = (1<<i)-1;ret &= n;return (n>>(j+1))<<(j+1) | (m<<i | ret);}int main(){ int n = 1<<10, m = 21; int ans = update_bits(n, m, 2, 6); print_binary(n); print_binary(m); print_binary(ans); return 0;}
0 0
- Q5.1 Set Bits
- Q5.6 swap odd and even bits
- Q5
- Q5
- Cracking the coding interview--Q5.1
- Cracking the coding interview--Q5.1
- Count total set bits in all numbers from 1 to n
- Count set bits in an integer
- Q5.4 ((n & (n-1)) == 0).
- Q5.2
- Q5.3
- Q5.4
- Q5.6
- Q5.7
- Leetcode Q5
- leetcode:bits:Number of 1 Bits(191)
- counting 1 bits SPOILER
- Counting 1-bits
- Linux显示USB设备
- 应用QQ2440(s3c2440)ARM开发板驱动MMA7455加速度计的linux设备驱动编写
- spi子系统分析续
- 几个简单的jquery知识点练习
- MySQL执行Select语句将结果导出到文件的方法
- Q5.1 Set Bits
- 关于c# TCP SOCKET 通信
- 在openstack neutron中使用VxLAN
- linux下阅读源代码的工具
- MTD原始设备与FLASH硬件驱动的对话
- Linux显示机器的处理器架构
- leetcode_Longest Common Prefix_easy
- Java虚拟机使用引用计数来确定对象是否存活?
- 奇怪的Javascript(持续更新)