c语言负数左移右移_C语言 位运算符的运算规则
位運算是指按照二進(jìn)制進(jìn)行的運算,在C語言中,提供了6種的位運算符,他們分別是按位與(&),按位或(|),按位異或(^),按位取反(~),左移(《)和右移(》)。這些運算符只能用整型操作數(shù),也就是說只能用于帶符號和不帶符號的short,int,long,char類型。
1:按位與(&)
按位與是指講兩個操作數(shù)按照二進(jìn)制位進(jìn)行“與”運算。兩個操作數(shù)相應(yīng)的二進(jìn)制位都為1,結(jié)果為1,反之結(jié)果為0。這個按位與的運算規(guī)則其實和邏輯運算符“與”一樣,只不過是按位與是在二進(jìn)制位上進(jìn)行運算。
以3和5舉例說明,3的二進(jìn)制為00000011(2),5的二進(jìn)制為00000101(2)這按位與的運算結(jié)果為00000001(2)即3&5=1。
2:按位或(|)
按位或是指講兩個操作數(shù)按照二進(jìn)制位進(jìn)行“或”運算。兩個操作數(shù)相應(yīng)的二進(jìn)制位只要有一個為1,結(jié)果為1,反之結(jié)果為0。
以3和5舉例說明,3的二進(jìn)制為00000011(2),5的二進(jìn)制為00000101(2)這按位或的運算結(jié)果為00000111(2)即3|5=7
3:按位異或(^)
按位異或是指將兩個操作數(shù)按照二進(jìn)制位進(jìn)行運算,兩個操作數(shù)相應(yīng)的二進(jìn)制位值只要相同,運算結(jié)果為0,反之結(jié)果為1。
以3和5舉例說明,3的二進(jìn)制為00000011(2),5的二進(jìn)制為00000101(2)這按位異或的運算結(jié)果為00000110(2)即3^5=6
4:按位取反(~)
按位取反是單目運算符,只有一個操作數(shù),是將操作數(shù)相應(yīng)的二進(jìn)制位數(shù)值取反。
以5為例,5的二進(jìn)制數(shù)為00000101(2)
按位取反結(jié)果為00000010(2)即~5=2
5:左移(《)
左移運算符是用來將一個數(shù)的各二進(jìn)制位左移若干位,移動的位數(shù)由右操作數(shù)指定(右操作數(shù)必須是非負(fù)
以3來舉例,3的二進(jìn)制為00000011,左移結(jié)果為00000110,即《3=6
6:右移》
右移運算符是用來將一個數(shù)的各二進(jìn)制位右移若干位,移動的位數(shù)由右操作數(shù)指定(右操作數(shù)必須是非負(fù)值),移到右端的低位被舍棄,對于無符號數(shù),高位補0。對于有符號數(shù),某些機器將對左邊空出的部分用符號位填補(即“算術(shù)移位”),而另一些機器則對左邊空出的部分用0填補(即“邏輯移位”)。注意:對無符號數(shù),右移時左邊高位移入0;對于有符號的值,如果原來符號位為0(該數(shù)為正),則左邊也是移入0。如果符號位原來為1(即負(fù)數(shù)),則左邊移入0還是1,要取決于所用的計算機系統(tǒng)。有的系統(tǒng)移入0,有的系統(tǒng)移入1。移入0的稱為“邏輯移位”,即簡單移位;移入1的稱為“算術(shù)移位”。
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結(jié)
以上是生活随笔為你收集整理的c语言负数左移右移_C语言 位运算符的运算规则的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机硬件加速怎么开,显卡硬件加速,小编
- 下一篇: sqldeveloper mysql迁移