C语言中位操作
首先32位系统-3默认为整形占4字节(32个位),二进制表示11111111 11111111 11111111 11111101得来方法:3的二进制位00000000 00000000 00000000 00000011,取反补1后等到上面的值再看下-1的二进制11111111 11111111 11111111 11111111同样是1取反后补1下面看下移位因为第一位为1,右移时根据最高位补位,移1位后值为:11111111 11111111 11111111 11111110再移动1位就变成了:11111111 11111111 11111111 11111111后面不管你右移多少次...全部
首先32位系统-3默认为整形占4字节(32个位),二进制表示11111111 11111111 11111111 11111101得来方法:3的二进制位00000000 00000000 00000000 00000011,取反补1后等到上面的值再看下-1的二进制11111111 11111111 11111111 11111111同样是1取反后补1下面看下移位因为第一位为1,右移时根据最高位补位,移1位后值为:11111111 11111111 11111111 11111110再移动1位就变成了:11111111 11111111 11111111 11111111后面不管你右移多少次始终是这个结果,所以-3右移2次以上后值就是-1了。
收起