私は MATLAB を学習しており、指定された double から最上位ビットを抽出するという問題に直面しています。getmsb 関数を見ました。しかし、5つの最上位ビットを言うことができる機能はありますか?
アニル。
遅いので、もっと良い解決策があると確信しています。とにかく、これはそれを行うようです:
A = rand(1, 1) * 10000
nBits = 5
curBits = ceil(log2(A))
toShift = curBits - nBits
wantedMSB = fix(A / 2^toShift) % This is still a double, feel free to cast.
dec2bin(wantedMSB) % Result in bitstring form.
または、1 つのライナーとして:
A = rand(1, 1) * 10000
nBits = 5
wantedMSB = fix(A / 2^(ceil(log2(A)) - nBits))
[編集]ところで、このgetmsb
関数は Fixed-Point Toolbox の一部であり、すべての MATLAB インストールで利用できるわけではありません。