gpt4 book ai didi

c - C 中的短整型、十六进制和二进制基数

转载 作者:太空宇宙 更新时间:2023-11-04 07:33:07 25 4
gpt4 key购买 nike

我需要你的帮助来分析以下代码的输出:

int f(unsigned short x){
int count;
for (count=0; x!=0; x>>=1){
if (x & 1)
count++;
}
return count;
}

int main(void){
unsigned short x = 0x00ef;

while (x){
printf("%d", f(f(x)));
x<<=4;
}

printf("\n");
return 0;
}

我将 x 视为二进制基数中的 239 或 11101111

所以 11101111 != 0 所以我们进入 while 循环:f(f(11101111)),然后 f 的计数达到 7:111011110111011100111011** 到 **0001110100001110 等等。我们有 7 种情况,其中 (x&1!=0) 然后 00000111 被发送到 f,并且计数为 3,正在打印 3 并且原始数字变为 11110000 并发送到f,然后将 4 发送到 f,但由于 4 是 00000100 count=1 然后我希望打印 1,但输出是 3331。

有人可以指出我的错误吗?

最佳答案

你似乎期望原始数字被限制在 8 位,这很少是 unsigned short 的大小.

第一类后,x将举行0x00ef << 4 ,即 0x0ef0仍然设置了相同数量的位数。

关于c - C 中的短整型、十六进制和二进制基数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11558001/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com