gpt4 book ai didi

c - C中rotate left的解释

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

我需要帮助来理解 C 语言。我刚开始。我有这段来自维基百科的代码:

unsigned int rotl(unsigned int value, int shift) {
return (value << shift) | (value >> (sizeof(value) * CHAR_BIT - shift));
}

我确实理解位旋转的含义。我只是不明白这个实现。为什么我必须在这里执行 OR 运算符?正确的部分实际上做了什么?

我将值向右移动值的字节数乘以(char 变量中的位数减去我想要的移位)。为什么我必须这样做?如果我想到一个例子。我想将 unsigned 1011 (Base 2) 2 位向左移动。我按照代码说的做:

0000 0000 0000 0000 0000 0000 0000 1011 << 2 = 0000 0000 0000 0000 0000 0000 0010 1100

1011 >> (4*(8-2))=24 = 0000 0000 0000 0000 0000 0000 0000 0000 0000;

执行 |: = 0000 0000 0000 0000 0000 0000 0010 1100。

好吧,那没有用。我做错了什么?

谢谢!

最佳答案

这是 8 位“左移”和“左移”的图形定义:

enter image description here

"Why do I have to perform the OR operator here?" 
"And what does the right part actually do?"

对于“向左旋转”操作,从左侧“掉落”的位被回收,因为它们被“或”返回到右侧。

关于c - C中rotate left的解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23411708/

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