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

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

采纳的回答

MathWorks Support Team
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!