![](/img/trans.png)
[英]how do i convert an unsigned char array into an unsigned long long?
[英]How do I cut off first bits in an unsigned long with bitwise?
我有m = 0x401e000000000000
并且我想得到f = 0xe000000000000
。 使用按位运算符,我将如何在 C 中执行此操作? 我用f = (m & 0xFFFFFFFFFFFFF);
但我只得到0。
在IDEOne中运行时,它可以工作
#include <stdio.h>
int main(void) {
unsigned long m = 0x401e000000000000;
unsigned long f = m & (0xFFFFFFFFFFFFF); // Expect value = 0xe000000000000.
printf("Result f = 0x%0lX\n", f);
return 0;
}
Success #stdin #stdout 0s 5416KB
Result f = 0xE000000000000
您也可以使用>>
<<
运算符,代码中的“12”是您要移动的位位置。 <<
运算符将其左侧操作数向左移动其右侧操作数定义的位数。 左移操作舍弃结果类型范围之外的高位,并将低位空位位置置零,然后可以使用>>
操作数恢复比例。
#include <stdio.h>
int main()
{
unsigned long m = 0x401e000000000000;
m = (m<<12);
m = (m>>12);
printf("Result f = 0x%0lX\n", m);
return 0;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.