作者tkcn (小安)
看板java
标题Re: [J2ME] 请问 >>> 1 的意义?
时间Mon Jan 15 12:35:40 2007
※ 引述《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