C语言的左移和右移的问题?
C语言中:1)左移:丢弃最高位的符号位,低位补0。
2)右移:如果为正数,那么高位补0进行右移,如果为负数,那么高位补1,进行右移。
有疑问的地方:
1)对于左移:既然丢弃最高的符号位,那么为什么 -7 << 2 的结果会是 -28。
2)对于右移:那原来的符号位还跟着右移吗再补位吗?还是先右移原来的非最高位的位,在针对符号位进行操作?
还请大佬们详细解答一下?
PS:采用的编译环境是Dev-C++,Win10
2018-01-29 12:25
2018-01-29 12:59
2018-01-29 13:08
2018-01-29 13:34
2018-01-29 14:10
2018-01-29 14:10
2018-01-29 14:12