㈠ C語言中的右移一位是不是應該除以2
右移一位相當於除以2。
例:5>>1
5的二進製表示是101,那麼右移一位之後是10就是2了,是整除的;左移的話就是在後面補一個零,相當於是乘以二,那麼變成了1010,十進制是10。
101右移,就是把最後一位拿掉了,是10這個是二進制的,十進是2,5/2本來是小數,但這里是整數操作的,所以把小數部分去掉了。
(1)程序右移1位為什麼是乘以2擴展閱讀
C語言中的左移
1、左移就是把一個數的所有位都向左移動若干位,在C中用<<運算符.例如:
inti=1;
i=i<<2;//把i里的值左移2位。
2、補符號位,就是一個signedchara=0xff;
a=a>>1;/*它仍是0xff,補了符號位。最高位是符號位=1,右移後符號位保持不變*/;
a=0x80;
a=a>>1;/*變成了0xc0*/
a=0x1f;
a=a>>1;/*變成了0x0f,因為它開始的符號位就是0*/。