c++中的左移、右移运算
? 移位運(yùn)算包含“邏輯移位”(logical shift)和“算術(shù)移位”(arithmetic shift)。
邏輯移位:移出去的位丟棄,空缺位(vacant bit)用 0 填充。
算術(shù)移位:移出去的位丟棄,空缺位(vacant bit)用“符號(hào)位”來填充,所以一般用在右移運(yùn)算中。
?
? c++中,整數(shù)分有符號(hào)數(shù)和無符號(hào)數(shù)兩種,對于這兩種數(shù)做左移、右移運(yùn)算,稍有區(qū)別:
1、如果是無符號(hào)數(shù),不管是左移還是右移都是“邏輯移位”
例如,分別對無符號(hào)數(shù) 179 做左移、右移操作的結(jié)果,
?
?
????????????????????????????????????????????????????????????????????????????????? 圖1 邏輯左移
?
?
?圖2 邏輯右移
?
?
2、如果是有符號(hào)數(shù),
2a,如果是做左移運(yùn)算,那么做的是“邏輯移位”,同 1中無符號(hào)數(shù)的左移。
2b,如果是做右移運(yùn)算,那么做的是“算術(shù)移位”。
?
例如:
?
圖3 負(fù)數(shù)的右移
?
圖4 正數(shù)的右移
?
??? 對于當(dāng)前的大多數(shù)c/c++編譯器來說,都是按照上面所講實(shí)現(xiàn)的。
?
總結(jié)
以上是生活随笔為你收集整理的c++中的左移、右移运算的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ubuntu下txt文件编码转换、查询(
- 下一篇: C++的类和C里面的struct有什么区