发布网友 发布时间:2022-04-24 02:41
共5个回答
热心网友 时间:2023-10-22 14:21
>>=只对整数管用,右移后面的数字那么多位,再将结果赋给左边的变量。a>>=2就是将变量a的值右移2位再将结果赋给a。意义与“将a的值除以4并将结果赋给a”等价——右移多少位,效果就是除以2的多少次方。
热心网友 时间:2023-10-22 14:22
C语言中的语句a>>=2,就是把a的二进制值的最后2位抹掉。
比如a=10101110,经过a>>=2后,a的值就是101011。追问还是感觉十分别扭,两个运输符怎么可以挨着
追答两个运算符是可以挨着的。a>>=2等价于a=a>>2
这很常见:
x+=a;
y-=b;
…………
热心网友 时间:2023-10-22 14:22
你这给的是十进制。右移两位,十进制上相当于除以4,所以结果是10101110/4。
你要表示二进制,可以在C语言里用16进制。
int a = 0xae;//10101110
a>>=2;
printf("%x",a);//结果为0x2b---00101011
热心网友 时间:2023-10-22 14:23
就是把a的右移2位,前面补充2个零,
最终结果是00101011追问还是感觉十分别扭,两个运输符怎么可以挨着
追答习惯就好。
热心网友 时间:2023-10-22 14:23
右移存在最左边补位问题,值得注意
热心网友 时间:2023-11-13 15:20
>>=只对整数管用,右移后面的数字那么多位,再将结果赋给左边的变量。a>>=2就是将变量a的值右移2位再将结果赋给a。意义与“将a的值除以4并将结果赋给a”等价——右移多少位,效果就是除以2的多少次方。
热心网友 时间:2023-11-13 15:20
C语言中的语句a>>=2,就是把a的二进制值的最后2位抹掉。
比如a=10101110,经过a>>=2后,a的值就是101011。追问还是感觉十分别扭,两个运输符怎么可以挨着
追答两个运算符是可以挨着的。a>>=2等价于a=a>>2
这很常见:
x+=a;
y-=b;
…………
热心网友 时间:2023-11-13 15:21
你这给的是十进制。右移两位,十进制上相当于除以4,所以结果是10101110/4。
你要表示二进制,可以在C语言里用16进制。
int a = 0xae;//10101110
a>>=2;
printf("%x",a);//结果为0x2b---00101011
热心网友 时间:2023-11-13 15:21
就是把a的右移2位,前面补充2个零,
最终结果是00101011追问还是感觉十分别扭,两个运输符怎么可以挨着
追答习惯就好。
热心网友 时间:2023-11-13 15:22
右移存在最左边补位问题,值得注意