[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[jfriends-ml 12087] 「 >>> 」演算子など



岡澤です.読書会お疲れさまでした.

> 「 >>> 」の演算子の機能は? --> 宿題!! (情報求む)
を調べてみました.

http://java.sun.com/docs/books/jls/second_edition/html/expressions.doc.html#5121
より
   n >>> s において
      ・ n >= 0 のときは (n>>s) と同じ
      ・ n < 0 のときは (n>>s)+(2<<~s) と同じ
      → (2<<~s) を加算するのは,符号ビットをキャンセルするため
ということでした.

「<<<」は「論理左シフト」になりそう,という話があったと思うのですが,
やっぱり用意されてる言語は見あたりませんね.

一応,Windows 関数では
Int64ShllMod32
で 64 ビット整数の論理左シフトができるようです.いつ使うんだろう.
http://www.microsoft.com/japan/msdn/library/ja/jpfileio/html/_win32_int64shllmod32.asp



これだけだとあれなので,少し触ったことのある言語について,
ビットシフト演算を調べてみました.
ビットと縁が遠そうな JavaScript が一番凝ったことをしていて,おもしろいかも.

* Ruby
http://www.ruby-lang.org/ja/man/?cmd=view;name=Integer より
・「>>>」はない
・「>>」は算術右シフト

* Perl
http://perldoc.jp/docs/perl/5.6.1/perlop.pod#Integer%20Arithmetic より
・「>>>」はない
・「>>」を適用すると
→ デフォルトでは論理右シフト
・use integer すると
→算術右シフト

* JavaScript( ECMA Script )
http://www.ecma-international.org/publications/standards/Ecma-262.htm より
・「>>>」がある
→ 途中いろいろあって,演算結果は符号なし整数になる

* C#
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/jpdnbcsharp/htm/csharp2-6.asp
より
・「>>>」はない
・int に「>>」を適用すると
→ 算術右シフト
・uint に「>>」を適用すると
→ 論理右シフト


以上です.

--
岡澤裕二
yujiorama+java-reading@xxxxxxxxx