编写一个函数,将0-15位复制到16-31
Write a function to copy 0-15 bits into 16-31
如何编写将0-15位复制到16-31中的函数?
unsigned int n = 10; // 1010
copyFromTo(n);
assert(n == 655370);
n = 5;
copyFromTo(n);
assert(n == 327685);
n = 134;
copyFromTo(n);
assert(n == 8781958);
您想要将0-15中的位复制到16-31。你应该明白,乘以2相当于将数字的位向左移动一次(移动到更高位)。
如果您的号码是n
,则n << 16
会将您的号码向左移动16位。这相当于n乘以2的16次方,恰好是65536。
要复制这些位,并将原始位保持在0-15,命令n = n + (n << 16);
应该起作用。然而,这方面的问题是(如评论中所指出的),高位16-31位仍然设置在n +
项中。我们还需要清除这些碎片。请注意,65535对应于2^16-1,前0-15位为1,其他位为0。因此,正确的命令是n = (n && 65535) + (n << 16);
这样做:
void copyFromTo(unsigned int& n)
{
n = (n & 0xffff) * 0x00010001;
}
n<lt;16来移位位就可以了,把低位移到高位?(已编辑)然后,只将较低的16位复制到中
相关文章:
- 如何使用位字段将数据从二进制文件复制到结构中?
- 将数组中的任意位复制到变量中?
- C++中的运行时位复制(位掩码)
- 如何将 HDC 位图快速复制到三维阵列?
- 将 n 位从 8 位数组复制到 64 位整数?
- 复制整数位的最快方法
- 将包含位字段和动态数据的结构复制到 Char 数组缓冲区中
- 您能否给我一个 16 位(或更多)十进制数,该十进制数仅在第 15 位正确转换为双精度浮点圆
- 复制位集的复杂性有多大?它和位掩码一样吗?
- VC 15调用错误的复制构造函数以捕获lambda
- 输出一个15位数字
- QSqlDatabase:QMYSQL 驱动程序未加载在 Ubuntu 15.04 64 位上
- 我可以使用STD ::复制将数据的位模式从整数向量复制到一系列未签名的字符
- 编写一个函数,将0-15位复制到16-31
- <TiXmlDocument>在此卸载区域中使用的 map<shared_ptr、double> 不可按位复制
- 仅寻址 15 位 WORD
- 检查数字是否为完全平方数(数字大于15位)
- 在返回类型旁边使用"&"时,您是返回引用,还是仍然是逐位复制?
- 复制构造函数- c++按位复制与按成员复制
- 15位彩色组件,位移位