Re: [J2ME] 請問 >>> 1 的意義?
※ 引述《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
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 4 之 5 篇):