トピック
しんいち stgf1080

シフト演算

RGB(255,0,0,0)>>24 って255にならないんですね。 こういうもんだったっけ?(今更感^^;)
3そうだね
プレイ済み
返信[1]
親投稿
負数のシフトは処理系に依存するので行わない方が良い……と聞いたことがありますが、そういう次元の問題では無い気がしますね。
2そうだね
プレイ済み
返信[2]
親投稿
BlackSoft BlackSoft.mkII3g
↑その認識で正しいです。 ビットの右シフトは、処理系により符号を維持する/しないがあるので注意が必要です。
2そうだね
プレイ済み
返信[3]
親投稿
プチコンは算術シフトなので、負数は負数のままになりますね… 論理シフト欲しいって誰か要望してたかもしれないし、してないかもしれないし。
3そうだね
プレイ済み
返信[4]
親投稿
だにえる haru2016nen
「 (A<<1)>>2 」と「 A>>1 」は同じ だけど、 「 (B>>1)<<2 」と「 B<<1 」は違う っていう話かな。
0そうだね
プレイ済み
返信[5]
親投稿
otta777 otta777a
"0"*SFT+RIGHT$(BIN$(NUM,32),32-SFT) SFT:右シフトしたいビット数 NUM:右シフトしたい数値 として2進数の文字列を切り取って論理シフトした結果にする方法もあります。 かなり小ずるいですけど^^;;;
3そうだね
プレイ済み
返信[6]
親投稿
moh6an moh6an
RGB関数噛ませているので16bit色に24bitシフトしているような希ガス・・(;´Д`)
0そうだね
プレイ済み
返信[7]
親投稿
MIKI ifconfig
論理右シフト関数を作ってみました。 ' 論理右シフト ' x は 整数, n は 0 から 32 まで def lsr(x, n) return (x >> n) and ((1 << (32 - n)) - 1) end ? lsr(rgb(255,0,0,0), 24) '255 を表示 だにえるさん 逆では? moh6anさん 気のせいでしょう
4そうだね
プレイ済み
返信[8]
親投稿
しんいち stgf1080
otta777さんの小ずるい方法面白いと思いました。そういう発想嫌いじゃないです(^o^) MIKIさん関数ありがとうございます。上手い方法ですね。 特に困ってるってことではなかったのですが、覚えとかないと後々謎バグ埋め込みそうで気を付けないとですね。
0そうだね
プレイ済み
返信[9]
親投稿
せいふぁ SeyfertSluw
RGBカラーの32bitなら透過度を最初に分離 (A=(X>>24) AND &HFF:RGB=x AND &HFFFFFF)することも 考慮してみては? そもそも論理シフトするなら最初に x=(x>>1) AND &H7FFFFFFF すればいいだけだと思うけど。
2そうだね
プレイ済み
返信[10]
親投稿
せいふぁ SeyfertSluw
あとビット演算、シフト演算について真面目に使うのなら 「2の補数」の考え方を理解したほうが楽だよ。
1そうだね
プレイ済み
返信[11]
親投稿
しんいち stgf1080
私はプチコンのシフト演算が算術シフト?なるもの、っていうのを知らなかっただけで、2進数での計算は一応分かってるつもりです(^o^) 近頃は2進数で計算してたものをARYOPでどう実現するかで悩むことが多い(^^ゞ
0そうだね
プレイ済み
返信[12]
親投稿
MIKI ifconfig
せいふぁさん if n then return ((x>>1) and &h7fffffff) >> (n-1) else return x かあ 面白いこと考えますね。 これだったら n > 0 を前提にして条件分岐させないのがいいですね。 aryop化を考えると配列を二回シフトさせるので不利ですが。
0そうだね
プレイ済み