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

조회 수: 17 (최근 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 CenterFile Exchange에서 ビット単位の演算에 대해 자세히 알아보기

제품

Community Treasure Hunt

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

Start Hunting!