#include<stdio.h>
int main(){ printf ( " ~0 >> 1: %d.\n", (~0) >> 1 ); getchar(); return 0 ;}为什么结果是-1啊`~`0按位后应该为 11111111右移一位后该是: 01111111就不回是负数啊`可结果是-1```
不同的编译器位移时有逻辑和算术的区别.
~0二进制全是1(16 或32个,编译器不同),在向右移了一位的情况下,,最高位补上的是1了,因为没有0补上,,
有人可以对这个问题做出详细的解答吗?我很想知道答案!!!