gpt4 book ai didi

c - C 中的移位运算符(<<、>>)是算术运算符还是逻辑运算符?

转载 作者:行者123 更新时间:2023-11-30 16:11:49 26 4
gpt4 key购买 nike

在 C 语言中,移位运算符( <<>> )是算术运算符还是逻辑运算符?

最佳答案

左移时,算术移位和逻辑移位没有区别。右移时,移位的类型取决于被移位的值的类型。

(作为那些不熟悉差异的读者的背景知识,“逻辑”右移 1 位会将所有位向右移动,并用 0 填充最左边的位。“算术”移位将原始值保留在最左边的位。在处理负数时,差异变得很重要。)

当移位无符号值时,C 中的 >> 运算符是逻辑移位。当移位有符号值时,>> 运算符是算术移位。

例如,假设一台 32 位机器:

signed int x1 = 5;
assert((x1 >> 1) == 2);
signed int x2 = -5;
assert((x2 >> 1) == -3);
unsigned int x3 = (unsigned int)-5;
assert((x3 >> 1) == 0x7FFFFFFD);

关于c - C 中的移位运算符(<<、>>)是算术运算符还是逻辑运算符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58494098/

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