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

14 Ansichten (letzte 30 Tage)
MathWorks Support Team
MathWorks Support Team am 25 Okt. 2013
あるデータの上位側の所望の数のビット列、下位側の指定の数のビット列を分け、それぞれを新たな値として考えたい場合があります。どうすれば良いか教えてください。

Akzeptierte Antwort

MathWorks Support Team
MathWorks Support Team am 25 Okt. 2013
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);

Weitere Antworten (0)

Kategorien

Mehr zu ビット単位の演算 finden Sie in Help Center und File Exchange

Produkte

Community Treasure Hunt

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

Start Hunting!