gpt4 book ai didi

c - 为什么将操作移位 1 而不是 0?

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

作为初学者,我正在尝试实现简单的 C 语言代码。
我第一次在 8 位大小的缓冲区上使用 OR 操作,然后应用右移操作。
我发现了一些奇怪的事情,有时我加 1 而不是 0 的移位&有些情况正确地加了 0。

我的代码:

char buffer[0]={0x7e};  
int bitsetcounter;
int bitCounter;
int s=1;

int main () {
if (s=1) {
buffer[0]=buffer[0]|0x80;
bitsetcounter++;
bitCounter++;
}

buffer[0] >>=1;
printf("the buffer is %x",buffer[0]& 0xff);
}

输出>>缓冲区是ff。这里为什么输出那样?如果我通过添加 0 值移动,我应该有 7F 而不是 ff?

最佳答案

替换

char buffer[0]={0x7e};

unsigned char buffer[0]={0x7e};

但是 >> 运算符仍然依赖于平台

关于c - 为什么将操作移位 1 而不是 0?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43305655/

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