> 2進数に置き換えてから考えると解り易いですよ。
> 例えば、10>>1(10(&hA)を右シフト1)とすると"5"に成り、10>>2(右シフト2)だと"2" と成ります。
>
> [2進数表記]
> 8 4 2 1 8 4 2 1
> 1 0 1 0 -> 0 1 0 1 (10 >> 1)
> 1 0 1 0 -> 0 0 1 0 (10 >> 2)
すごい分かりやすいですね...( ̄□ ̄;)
>
「10 >> 5」は、「10 * ( 1/(1<<5) )」と等しくなると思ったんですけど、違いました。というか、「Int(10 * ( 1/(1<<5) ))」でした。
> この答えって正しいんでしょうか?
> 「10 >> 5」だと "0" に成りますし、「1 << 5」 だと "&h20(32)" です。
いえ、「10 >> 5」の答えと「10 / (1<<5)」の答えが等しくならないので右シフトの答えが間違っているんじゃないかと思いました。
どうして等しくなると思ったかは、ActiveBasicでシフト演算の勉強をしていて、「1 << 1 = 2」,「1 << 2 = 4」,「1 << 3 = 8」,「1 << 4 = 16」となることから、「x << y = x * (2^y)」ということに気付いて、じゃあ右シフトなら「x >> y = x / (2^y)」になると思ったんです。
最初は何を思ったか「x >> y = x * ( 1/(x * 2^y) )」なんて複雑に考えてましたけど...。