あるデータを、上位と​下位のビット列で分け​て取得したい場合、ど​のようにしますか?

12 ビュー (過去 30 日間)
MathWorks Support Team
MathWorks Support Team 2013 年 10 月 25 日
回答済み: MathWorks Support Team 2013 年 10 月 25 日
あるデータの上位側の所望の数のビット列、下位側の指定の数のビット列を分け、それぞれを新たな値として考えたい場合があります。どうすれば良いか教えてください。

採用された回答

MathWorks Support Team
MathWorks Support Team 2013 年 10 月 25 日
bitget 関数を用いて、あるビット列中より所望のビットを取り出すことが可能です。詳細な設定は、bitget 関数のヘルプに記載があります。コマンドウィンドウで下記コマンドを実行することで、確認できます。
>> doc bitget
bitget 関数の入力引数にビットの範囲を指定し、指定した部分のビット列を取得することで、上位と下位とのビット列ごとに分けられます。
・例) 16進データを、上位2バイト(16ビット)、下位2バイト(16ビット)ごとに分ける
data = {'242E563B';'898D8244';'7776717B';'6126969B';'3A215F0B'};
% ビット列格納配列の事前定義
datab = zeros(length(data)*2,16);
% 所望の位置のビット列の代入
for n = 1:length(data)
datab(2*n-1,1:16) = bitget(hex2dec(data{n}),32:-1:17); % 上位16ビット
datab(2*n,1:16) = bitget(hex2dec(data{n}),16:-1:1); % 下位16ビット
end
% 行ごとに2進数を表す文字列に変換
datastr = num2str(datab);
% bin2dec 関数で10進数に変換
outdata = bin2dec(datastr);

その他の回答 (0 件)

カテゴリ

Help Center および File Exchangeビット単位の演算 についてさらに検索

製品

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!