1.邏輯移位和算術移位差異
邏輯移位是無論左移還是右移,移出都用0來填補。
算術移位分為兩種情況,針對無符号值,那麼算術移位和邏輯移位是相同的;若有符号值,算術左移等同于邏輯右移,而算術右移,需要根據符号位進行填充,若符号位為1則填充1,反之填充0。
注:在标準中隻針對無符号規定左移或右移都是邏輯移位,但是對于有符号值,未有明确規定,是未定義行為,采用邏輯或者算術完全取決于編譯器,是以需要避免對有符号值進行移位。
2.移位位數為負數
比如:a>>-2,這種移位性質也是未定義的,由編譯器來決定,是以也要避免使用。