【发布时间】:2014-05-26 02:56:01
【问题描述】:
我有无符号整数(32 位),想分成 3 组,每组 12 位。 但是,我无法正确提取数字。 例如假设我有 32 位无符号整数,如下所示:
1111 0000 1011 0000 1010 1001 1100 1101
那么我想要这样的东西:
S1 = 1111 0000 1011
s2 = 0000 1010 1001
s3 = 1100 1101
程序:
#include<stdio.h>
int main() {
short s1,s2,s3 = 0
unsigned int addr = 4194624;
s1 = addr>>12;
addr = addr>>12;
printf("%d\n", s1);
s2 = addr>>12;
addr = addr>>12;
printf("%d\n", s2);
s3 = addr>>12;
addr = addr>>12;
printf("%d\n", s3);
return 0;
}
【问题讨论】:
-
你正在修改
addr变量,你应该将它复制到一个临时的并对其进行操作 -
嗯,12 * 3 = 36 大于 32。你可以有两个 12 位数字和一个 8 位数字,但你不能再放了。
-
短裤有at least 16 bits,所以除非你真的想用3条短裤,否则只需要两条。
-
@user3114046 如何以二进制打印?我可以吗 ?一周前我已经开始学习 c 语言了。
-
我的意思是:s3 应该左对齐以便它实际上是
1100 1101 0000还是右对齐以便它是0000 1100 1101?
标签: c++ c bit-manipulation bitwise-operators