gpt4 book ai didi

c - 分析程序位移位

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

我马上开始写代码:

#include <stdio.h>
int main()
{
unsigned char value = 0xAF;
printf("%02x\n", value);
value = (value << 4) | (value >> 4);
printf("%02x\n", value);
return 0;
}

首先,我认为您不能将数字存储在字符中,您需要将其设为整数。显然不是。然后,如果我做了移位垫:

value << 4 = 101011110
value >> 4 = 1010111

101011110
| 1010111
=101011111

那将是 0x15f。如果我编译它打印的代码

af
fa

谁能告诉我哪里错了?

最佳答案

位移 4 会移动 4 个二进制数字,而不是您所显示的 2 个。它还移动 1 个十六进制数字。所以如果你有 0xAF,向左移动 4 就会得到 0xF0。因为是char,所以只有8位,A被截掉了。右移 4 位类似地产生 0xA。 0x0A | 0xF0 == 0xFA

关于c - 分析程序位移位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28080247/

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