右ビットシフト演算を2 回行い、 4で除算する方法

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
例えば、10 進数の12( 2 進数の1100)に対して右ビットシフト演算を行う場合、

12= 1 1 0 0
 6= 0 1 1 0  右ビットシフト演算(1 回目)
 3= 0 0 1 1  右ビットシフト演算(2 回目)

となる。
このことから解かるように、
右ビットシフト演算を2 回行うことにより、
12( 10 進数)が
3(10 進数)となっており、
4 による除算が実現されている。
2デフォルトの名無しさん:2007/06/25(月) 15:25:27

      _人人人人人人人人人人人人人人_
        >    な なんだってー!!    <
        ̄^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^ ̄
        _,,.-‐-..,,_       _,,..--v--..,_
    /     `''.v'ν Σ´        `、_,.-'""`´""ヽ
    i'   / ̄""''--i 7   | ,.イi,i,i,、 、,、 Σ          ヽ
.     !ヘ /‐- 、u.   |'     |ノ-、 ' ` `,_` | /i'i^iヘ、 ,、、   |
    |'' !゙ i.oニ'ー'〈ュニ!     iiヽ~oj.`'<_o.7 !'.__ ' ' ``_,,....、 .|
.   ,`| u       ..ゝ!     ‖  .j     (} 'o〉 `''o'ヽ |',`i
_,,..-<:::::\   (二> /      !  _`-っ  / |  7   ̄ u |i'/
. |、 \:::::\ '' /        \ '' /〃.ヽ `''⊃  , 'v>、
 !、\  \. , ̄        γ/| ̄ 〃   \二-‐' //`
3デフォルトの名無しさん:2007/06/25(月) 16:06:38
10進数で2つ右にシフトしたら100による除算になるのと同じこと。
感動する点は何1つない。
4デフォルトの名無しさん:2007/06/25(月) 16:19:06
お前、今更知ったのか?
n >> 2
とかよく見るだろ
5デフォルトの名無しさん:2007/06/25(月) 16:33:41
>>3
Hello, world の文字を変えて
「おお、変わった変わった♪」
くらいの事でも感動できるもんよ、最初は。



ただ、それでスレ勃てるのはただの莫迦だけどな。
6デフォルトの名無しさん:2007/06/25(月) 17:36:15
次は8の場合でスレたててよ
7デフォルトの名無しさん:2007/06/25(月) 21:16:35
無駄な抵抗はやめろ
8デフォルトの名無しさん :2007/06/26(火) 09:05:47
例えば,getbits(x,4,3)は何を返すでしょう。

unsigned getbits(unsigned x, int p, int n)
{

return (x >> (p+1-n)) & ~(~0 << n);

}
9デフォルトの名無しさん:2007/06/26(火) 09:13:29
>>8
xの4ビット目からの3ビット分。
10デフォルトの名無しさん:2007/06/26(火) 10:32:43
>>1
負の値を論理右シフトしてみなさい。
11デフォルトの名無しさん:2007/06/26(火) 10:42:36
例えば、10 進数の-12( 2 進数の11110100)に対して右ビットシフト演算を行う場合、

-12= 1 1 1 1 0 1 0 0
-6= 1 1 1 1 1 0 1 0 右ビットシフト演算(1 回目)
-3= 1 1 1 1 1 1 0 1 右ビットシフト演算(2 回目)

となる。
このことから解かるように、
右ビットシフト演算を2 回行うことにより、
-12( 10 進数)が
-3(10 進数)となっており、
4 による除算が実現されている。
12デフォルトの名無しさん:2007/06/26(火) 11:53:11
>>11
それは arithmetic shift であって、logical shift ではない。
13デフォルトの名無しさん:2007/06/26(火) 12:48:16
>>8-9
なんか、5ビット目から3ビット分になってね?
14デフォルトの名無しさん:2007/06/26(火) 12:51:17
5ビット目のindexが4だから、正しくは5ビット目から3ビット分
あるいは、index4の位置から3ビット分
15デフォルトの名無しさん:2007/06/26(火) 13:33:13
負数の右シフトは処理系依存だな
16デフォルトの名無しさん:2007/06/26(火) 13:42:10
>>8
ポークビッツ
17デフォルトの名無しさん:2007/06/26(火) 21:41:32
>>15
処理系ではなく型によって挙動が変わるだけ。
18デフォルトの名無しさん:2007/06/27(水) 00:39:45
Java の char はその辺がウザいね
19デフォルトの名無しさん:2007/06/27(水) 01:23:46
>>1->>18
ここは右シフトの多いインターネッツですね
20デフォルトの名無しさん:2007/06/29(金) 07:27:40
>>17
処 理 系 依 存 で す
21デフォルトの名無しさん

         |:;:;:;:;:;:;:;:;:;:;:;:;:;:i;:;:;:;:;:;:;:;:;:;:;:;:;|
           |;:;:_:;:_:;:_:;:_;:;_:;:l:;_;:_:;:_:;:_:;:_;:_;|
        |______|_____|
        | 三|  _     _   |三 !
        | 三|  三シ   ヾ三  |三 |
        | 三′  .._     _,,..  i三 |
        ト、ニ| <でiンヽ  ;'i"ィでiン |三.|   言語も書かずに処理系依存とな!!
        ', iヽ!  、 ‐' /  !、 ーシ |シ,イ  
         i,ヽリ    ,' :  !.     |f ノ   
          ヾ!    i ,、 ,..、ヽ   lノ
          |      _ _    イ l
            l    ,ィチ‐-‐ヽ  i /、
             ゙i、   ゝ、二フ′ ノ/'"\
              | \  ー一 / /   _,ン'゙\
          ,ィ|、  \     /_,、-'" _,.-''´ `丶、__
       _, イ  | ヽ_ 二=''" _,. -''´  """""´´ ``ー