请说明-1左移2位的过程

来源:百度知道 编辑:UC知道 时间:2024/06/02 02:46:58

-1左移2位的过程

你是指原码 -1
还是计算机机内码(补码)的左移?

如果指8位原码,
-1 是 1000 0001
左移2位是 0000 0100 高位的 10 超界,自动丢掉。

计算机机内码,负数用补码表示
-1 的补码 是 1111 1111 (0xff)
左移2位是 1111 1100 (0xfc)
char i = -1;
printf("%2x %2x",i,i<<2);
得 0xff 0xfc

----------------------------
注:
-1 的补码 由 -1 的原码 除符号位外按位求反(成反码),反码加1是补码:1000 0001 -〉1111 1110 + 1 -〉1111 1111