【高速化】ビット演算 0x02
at TECH
[
2ch
|
▼Menu
]
■コピペモード
□
スレを通常表示
□
オプションモード
□このスレッドのURL
■項目テキスト
150:デフォルトの名無しさん 07/02/17 08:36:23 だが、それがいい 151:デフォルトの名無しさん 07/02/18 21:02:06 32bitのエンディアンの変換てどうすればいい? 152:150 07/02/18 21:13:28 ごめん、よく考えたら大したことなかった。 これでOKだ。 x = ( ( x >> 8 ) & 0x00ff00ff ) | ( ( x << 8 ) & 0xff00ff00 ); x = ( ( x >> 16 ) & 0x0000ffff ) | ( ( x << 16 ) & 0xffff0000 ); 153:デフォルトの名無しさん 07/02/19 09:11:59 単に x = (x & 0x000000ff) << 24 | (x & 0x0000ff00) << 8 | (x & 0x00ff0000) >> 8 | (x & 0xff000000) >> 24; と書いては何かまずいの? 152の方法だと1行目で算出したxを2行目で使っているので 1行目の処理と2行目の処理の並列性が無いし、マスク用の 定数が4バイトの2つ、3バイトの1つ、2バイトの1つで、 どのCPUを想定しているのかは知らないけど、普通は 上の方法のマスク定数より長いコードになるのでは。 24回のshiftが16回のshiftより時間がかかる状況なら 上の方法は好ましくないし、エンディアン変換のビット長が 64bitなら152の方法のほうが良いように思うが。
次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
レスジャンプ
mixiチェック!
Twitterに投稿
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch
5387日前に更新/206 KB
担当:undef