オイナルメモ帖

ウディタやドット絵、東方その他のメモ。更新が無い製作途中記事については「あ、エターなったんだな」とお察しください。
オイナルメモ帖 TOP  >  スポンサー広告 >  雑記  >  ウディタ テクニック >  ビット積について

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。


web拍手 by FC2
[ --年--月--日 --:-- ] カテゴリ:スポンサー広告 | TB(-) | CM(-)

ビット積について

うまく説明できるかわかりませんが、何日か前に思いついてロックマン風パスワードに使った、ビット積の使い方をここに書いときます。

が、まず、ビット積を理解する必要がありますね。
ビット積を理解するためにはビット数を理解する必要があります。
詳しくはグーグル先生にお願いするとして、
ビット数はウディタでは主に、「ツクール」のスイッチ的な使い方をしています。
(例:3(011)という状態に新たなスイッチがONになったら、7(111)になる。更に新たなスイッチをONにすると15(1111)になる。)←()内は二進数

そして、ビット積について。
マニュアルを見ると、
ビット積 → 「右辺の2つの数値をビットに直したとき、そのビットの積を取ります。
(例:5(101)と3(011)のビット積を取ると、1(001)になります)」
と書いてあります。
つまり、二つのビット数の重なった部分を知りたいときに使うわけです。
……だからなんなのっていう話ですが、これがビット数という数値を扱うときには役立つわけです。

分かりやすい(かどうかはわからないが)ように、↓図形の例え話にしてみました。

ビット積の考え方

マルとサンカクをそれぞれ、「5(101)」と「3(011)」、二つ組み合わせた図形を「7(111)」、重なった余計な部分は「1(001)」と考えてみてください。

・「5(101」と「3(011)」が組み合わさった「7(111)」を作りたいが、それを作るためには、「3(011)」-「1(001)」=「2(010)」を「5(101」に足す必要がある。

…どうでしょう?
使い方がわかってきたでしょうか?

と、ここで
「ちょっと待って。目的の数にしたいのなら、代入すればいいじゃん」
という人がいるかもしれません。
確かに、「7という目的の数にするためには、ビット積なんて面倒なのはやらずに、代入(=)で「変数X=7」としてしまえばいい」ですね。
しかし、「変数Xに既に8が入っている」可能性が考えられる状況ならどうでしょうか?
もし、既に「変数X=8(1000)」なのに「変数X=7(0111)」としてしまうと、ツクール2000で言うスイッチが一つOFFになってしまうことになります。
8だけならまだしも、30(11110)や60(111100)だったら?
OFFになるスイッチがちょっと多すぎますね。
つまり、何が入っているかわからないとき、7(111)というスイッチをONにしたいだけだとしたら?
ビット数をいじるときには、「nのビットを満たす→満たしていないなら+n」とする必要があるため、代入という方法は好ましくないわけです。
そういう状況で、重なっている部分を知るということが必要なのです。

いずれにしろ、ビット数とそれのスイッチ的な使い方を知らないと使えない方法でしょうが、
知っておいて損はないでしょう。

web拍手 by FC2
[ 2012年01月24日 01:36 ] カテゴリ:ウディタ テクニック | TB(0) | CM(0)
コメントの投稿












管理者にだけ表示を許可する
トラックバック
この記事のトラックバックURL

Web拍手
web拍手 by FC2
アクセス数
プロフィール

jeekza

Author:jeekza
ウディタでなんか作ったり作らなかったり、気まぐれでドット打ったり。
東方が好き。
Twitter
dotllect
pixiv
ask.fm

年月別アーカイブ
リンク
当サイトはリンクフリーです。
バナーはまだ無いですが……。


上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。