5 回答

TA貢獻1858條經(jīng)驗 獲得超8個贊
“>>>”運算符所作的是無符號的位移處理,它不會將所處理的值的最高位視為正負符號,所以作位移處理時,會直接在空出的高位填入0。當我們要作位移的原始值并非代表數(shù)值時(例如:表示顏色圖素的值,最高位并非正負號),可能就會需要使用此種無符號的位移。比如:
-10>>>2=1073741821
-10=1111 1111 1111 1111 1111 1111 1111 0110 (不管原來的“符號”位的值(一長串1),空上的全部直接填0)
0011 1111 1111 1111 1111 1111 1111 1101=1037341821
~ 按位非(NOT)(一元運算)
& 按位與(AND)
| 按 位或(OR)
^ 按位異或(XOR)
>> 右移
>>> 右移,左邊空出的位以0填 充
運算符 結果
<< 左移
&= 按位與賦值
|= 按位或賦值
^= 按 位異或賦值
>>= 右移賦值
>>>= 右移賦值,左邊空出的位以0填充
<<= 左 移賦值

TA貢獻1831條經(jīng)驗 獲得超4個贊
示符號,0位正,1為負)
無論>>還是>>>都是針對二進制數(shù)進行操作的。
1、右移運算符>>使指定值的所有位都右移規(guī)定的次數(shù)。右邊移出去的部分扔掉不要,左邊空出來的部分用原來的數(shù)字填充(這就是所謂的帶符號右移)
——比如說5,右移后為00000010。
——你給的例子,假設x=-12,表示為32位int型就是
11111111111111111111111111110100
x>>3即帶符號右移3位,結果是
11111111111111111111111111111101,化為十進制等于-3
2、>>>與>>唯一的不同是它無論原來的最左邊是什么數(shù),統(tǒng)統(tǒng)都用0填充。
——比如你的例子,byte是8位的,-1表示為byte型是11111111(補碼表示法)
b>>>4就是無符號右移4位,即00001111,這樣結果就是15。
添加回答
舉報