c语言 右移运算

2024-11-17 14:19:58
推荐回答(2个)
回答(1):

当然不可以。
xx[i][j]+=(xx[i][j]>>4)等价于
xx[i][j]=xx[i][j]+(xx[i][j]>>4); >>是右移4位,换算成二进制计算相当于乘以2的4次方。

回答(2):

>>是2进制右移,相反的还有<<是2进制左移。
举例如下,如果一个变量
int x=5;
则x的2进制表示为:
0000000000000101
执行x>>1代表x右移一位,就是上面这一串整体右移,末位淘汰,高位补0
于是x变成了
0000000000000010
也就是x变成了2
<<左移相反,高位淘汰,末位补0

你的那种x[i][j]+=>4是不行的,没有这种运算符。