あるデータを、上位と下位のビット列で分けて取得したい場合、どのようにしますか?
14 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
MathWorks Support Team
am 25 Okt. 2013
Beantwortet: MathWorks Support Team
am 25 Okt. 2013
あるデータの上位側の所望の数のビット列、下位側の指定の数のビット列を分け、それぞれを新たな値として考えたい場合があります。どうすれば良いか教えてください。
Akzeptierte Antwort
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);
0 Kommentare
Weitere Antworten (0)
Siehe auch
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!