#include <stdio.h>int main() {printf("%d\n", -1 >> 1);return 0;}这个为什么输出的是-1呀
负数右移时高位补一
C语言中两个大于号>>是右移位操作,就是把一个数的二进制形式的最右几位丢弃,最前面补原来最高位的数字。
-1的补码为全一,右移一位,高位任然补1,移位完后任然是全一,即-1。