• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ビットデータの取得方法について)

ビットデータの取得方法について

このQ&Aのポイント
  • ビットデータから指定された範囲のデータを参照する方法について教えてください。
  • シフト演算や構造体のビットフィールドを使用してビットデータからデータを取得する方法を教えてください。
  • ビットデータの取得方法について詳しく教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.3

このようなものをシフト演算でやる場合、基本は (1) >> で必要な分ずらす (2)必要なビットに対応する桁を1,他を0にした値と&を取って、必要なビットだけ残す の組み合わせです。 データc→0~0x3fに変換したいなら a. 16bitが最下位にくるようにずらしてから&で必要なビットだけにする (data >> 16) & 0x3f b. 16~21bitを残してから、16bitが最下位にくるようにずらす (data & 0x003f0000) >> 16 ビットフィールドは環境依存であり、どの順番に書いたらどこのビットに該当するか等が一意に決まりません。

その他の回答 (2)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

「24-34bitの1byte」ってどこでしょうか? あと, 「ビットフィールドで参照する方法」はこの情報だけでは書けません.

  • wormhole
  • ベストアンサー率28% (1626/5665)
回答No.1

シフト演算だとa~d順に(valは取得元になる値) (((val) >> 24) & ((1 << 8) - 1)) (((val) >> 22) & ((1 << 2) - 1)) (((val) >> 16) & ((1 << 6) - 1)) (((val) >> 14) & ((1 << 2) - 1)) ビットフィールドでビット操作を行うのはお勧めしないので省略。