【发布时间】:2021-03-27 08:00:36
【问题描述】:
我正在尝试在 C 中旋转十六进制数字。我遇到的问题是,每个循环。数字中出现更多的零。
这是我的代码:
int main (void) {
int hex = 0x1234ABCD;
for(int i=0; i<12;i++,hex <<=4){
printf("0x%04x %d ",hex,hex );
pattern(hex);
}
return 0;
}
我在这个网站上看到了一些其他代码,它们在班次中添加了 & 0x0F,但它对我不起作用。
这是我使用编译器的结果
0x1234abcd 305441741 0001 0010 0011 0100 1010 1011 1100 1101
0x234abcd0 592100560 0010 0011 0100 1010 1011 1100 1101 0000
0x34abcd00 883674368 0011 0100 1010 1011 1100 1101 0000 0000
0x4abcd000 1253888000 0100 1010 1011 1100 1101 0000 0000 0000
0xabcd0000 -1412628480 1010 1011 1100 1101 0000 0000 0000 0000
感谢您的帮助。
【问题讨论】:
-
是的,这就是左移的作用。
-
您是否正在尝试旋转这些位?否则,您的代码正在做它应该做的事情。
-
啊,是的,谢谢你,我正在尝试旋转它们。我应该澄清这一点。
-
@TimonDoo 为什么
0x%04x中的代码宽度为 4? 8 个十六进制数字是 8 吗?
标签: c hex byte-shifting