ビット演算

ビット演算で数値をオフにする時ってさ、

(1~7桁目までオンーオフスイッチを7個使っていて5桁目をオフにする時)

var(1) := (var(1) & 16) - 16 ←間違い
var(1) := (var(1) | 16) - 16

こうやって数値をオンにしてから引く、とかややこしいことするじゃん?

var(1) := (var(1) & 111) (111 = 1 + 2 + 4 + 8 + 32 + 64) ←旧版
var(1) := (var(1) & -17)←訂正した新版
(-17 = -1 - 16 、-1・・・全ビットが1、&・・・どちらかのビットが0なら計算結果は0)

(var(1) := (var(1) | 16)と対になっている)
(16 = 0 + 16 、0・・・全ビットが0、|・・・どちらかのビットが1なら計算結果は1)

これなら簡単にいけると思うんだけど、どうかな?既出かな・・・


追記:訂正しました。やっぱりこれ既出だったらしい(´・ω・`)
スポンサーサイト

コメントの投稿

非公開コメント

No title

前者が優れている点はスイッチを8桁以上に増設してもそのまま使える点だと思います。

Re: No title

> 名無し氏
いや、後者は例として111を出しただけですんで。
今気づいたけど、全部のビットがオンの時って-1だから、そこを基準にしたほうがいいですね。2147483647と勘違いして、それだと煩雑になるかと・・・
訂正しときます。

No title

-1にしたらよかったのですね。
一応似た形式として
var(1) := (var(1) & (16^-1))
が使われてますね。
あと前回気づかなかったのですが、3行目の&は|ではないでしょうか。

Re: No title

あ〜、その記述記事のものと同じ意味ですね。やはり既出だったか・・・w
&はそのままでいいかと。ある箇所のみ0にしたいので。
スイッチをオンにする式とオフにする式をビット形式で書いて比べてみてください。

No title

var(1) := (var(1) & 16) - 16
はvar(1)が5bit目がオフなら(var(1) & 16)は0になり、オンなら16になるので、それぞれ-16、0がvar(1)に代入されることになりませんか?

var(1) := (var(1) | 16) - 16
なら5bit目のオン・オフに関わらず、(var(1) & 16)は5bit目がオンになるだけなので、そこから5bit目をオフにする、となるので。

Re: No title

あー、1番上の式ですね。確かにそうですね、すいません。
訂正します。
プロフィール

skeleton

Author:skeleton
いらっしゃいませ
当ブログはリンクフリーとなっております。報告して頂ければ、こちらからも相互リンクさせていただきます。

連絡:
toramarusho"~(=^・ω・^)"yahoo.co.jp
"~"をいつもの文字に

"http://"が禁止ワードに設定されています。

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
アクセスカウンター
オンラインカウンター
現在の閲覧者数:
公開しているもの

白虎(ver0.0061β)

メイン公開キャラ
寅丸星改変
最大目標は神最上位レベルでの殺傷力最強だがまだまだ未完成…
そのうち格ゲーもできるようにしたい


神みずか改変パッチ(ver1.00)

神みずかが上位神化するパッチ
見た目はエフェクトなだけ、攻撃は全て裏でシステム管理の凶悪ガチパッチ

当身kfm
撃破挑戦キャラ
撃破挑戦キャラのくせにmugenを落としにかかるアホキャラ
とあるキャラを防御面でリスペクトしているがどうやらうまくいっていない模様

2P側対応親変更テンプレ
2P側でもバグらずに最終ヘルパー&開幕混線&親変更が使えるテンプレ
混線以上のキャラを製作する際は参考にどうぞ
最終ヘルパー設置のための解説テキストが入っていないので別に上げておきました

テトリス演出保護パッチ
裏ルートが使えなくなりました
Let's play tetris !
ブログ内リンク
リンク
検索フォーム
ブロとも申請フォーム

この人とブロともになる

QRコード
QR
RSSリンクの表示