コミュニティアイコン プチコン 非公式コミュニティ プレイ日記

アバター
こういち ◆.Id/aHiU36hu
2022/4/13 7:50
1e9+7年ぶりにプチコン4触ってます。
そういえば、プチコン4のシフト演算ってバグがあったような気がするんですよね。
確かnをk桁シフトするとき
hk=k>>>1
n<<<hk
n<<<k-hk
みたいに複数回に分けると回避できるんでしたっけ?
いや、そもそも32ビット未満しかシフトしないなら関係ないんですかね?

コメント

アバター
こういち 2022/4/13 12:29 ◆.Id/aHiU36hu
nをkだけシフトするとき、kが強制的にmod 32されるとかそんな挙動だったと思います。
実数型が整数型に変換されてシフトされるの自体は自然な挙動ですが、実数のままシフトできる環境も黒魔術的で面白そうではありますね。使い道はパッとは思い付かないですけど。
↑調べたら平方根の逆数求めるのに使えるらしい(https://en.m.wikipedia.org/wiki/Fast_inverse_square_root )

プチコンの場合、(and,or,xor,not,mod,div,>>,<<,>>>,<<<,<<+,>>-)がビット演算扱いらしく、これらは整数にしか適用できなかった(実数は整数に変換される)はず。
アバター
こういち 2022/4/14 19:20 ◆.Id/aHiU36hu
論理シフトは存在するだけで4の採用価値になるぐらい優秀だけど、左シフトも存在するのは珍しい気がする。(計算結果は同じなので、javaとかでは右シフトしか論理シフトがない)
確か論理シフトは算術シフトより高速だったはずなので、左シフトは使い得。(代償として一文字増える)
アバター
ツララ 2022/4/15 20:43 ◆ArUdBYOYME1V
そういやシフト演算が実装されてなかったmkUで
おちゃめさんのサイトを参考にしながら
無理やり数値を2進数文字列に置き換えて文字列操作した後にビット演算してXorshiftで乱数生成するプログラム作ったりしたなぁ
(シード値指定で同じ乱数が得られる処理欲しかったから)

確か数値が16ビットしかなかったから余分にもう16ビット分用意して
連結させてグルグルさせてた記憶

コメントを書く

  • こちらは「プチコン3号」「プチコンBIG」など、プチコンシリーズに関する話題を扱ったコミュニティです
  • プチコンシリーズにまったく関係ない書き込みはご遠慮下さい。削除の対象となります
  • こちらにはその他のゲームや雑談のコミュニティはなく、作る予定もありません (ひとりで管理できないため)。ごめんなさい
  • ユーザー登録なしで書き込みができます
  • 秘密の合い言葉は成りすましの防止 (トリップ機能)、書き込みの編集時の本人認証に使用します
  • 秘密の合い言葉に他人に推測されやすい言葉、他サービスと同じパスワードは入力しないでください。
  • 書き込むと、投稿時に入力したお名前と秘密の暗号が記憶され、ログイン状態になります

- WEB PATIO -