Re: [J2ME] 請問 >>> 1 的意義?

看板java作者 (小安)時間19年前 (2007/01/15 12:35), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串4/5 (看更多)
※ 引述《givemepass (希望時間可以倒退)》之銘言: : ※ 引述《gauyew ([瑤]拚了~)》之銘言: : : 將random.nextInt()的位元右移1個單位,左邊補上0 : : 再除以10取餘數 : 請問 >>>1 跟 >>1 有什麼不一樣? : 可否舉個例子,因為我在網路上找的例子都是朦朦朧朧帶過, : 還是不懂它的意思,是否能夠明白詳述一下它代表的意義? : 例如: : 5>>1 : 000000000000000000000000000000101變成 : 000000000000000000000000000000010 : -5>>1 : 100000000000000000000000000000101變成 : 100000000000000000000000000000010 從這裡開始就錯了 應該是二補數才對 -5>>1 111111111111111111111111111111011 (-5) 111111111111111111111111111111101 (-3) 可以看到 >> 並不只是 shift right, 而是針對負數做了一些處理 (sign-bit 沒有 shift,並且將 sign-bit 複製到最高位) 至於 >>> 則是單純的 shift -5>>>1 111111111111111111111111111111011 (-5) 011111111111111111111111111111101 (2147483645) : 我在網路上找到的例子是類似這樣... : 但是找不到>>>1的例子 : 請高手能夠指導一下,感激不盡^^ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.131.155.108
文章代碼(AID): #15gmIT-L (java)
文章代碼(AID): #15gmIT-L (java)