3
У меня есть вектор uint16, который мне нужно перевернуть последние 3 бита каждого номера.Переверните последние 3 бита вектора
Я уже это сделал, но я думаю, что для этого должно быть более простое решение. Вот мой код.
%Turn the vector to binary
V_bin = dec2bin(V,16);
for i=1:length(V)
%Get the last 3 bits
tmp = V_bin(14:end);
%Convert the string to decimal
tmpdec = bin2dec(tmp);
%Do the flip
tmpflip = bitcmp(uint8(tmpdec));
%Flipped to binary
tmpbin = dec2bin(tmpflip);
%Replace the flipped bits in the original string
V_bin(14:end) = tmpbin(6:end);
end
V = bin2dec(V_bin);
Как вы можете видеть, что есть много линий для простой операции, мне интересно, если есть более эффективный способ сделать то же самое.
ничего себе, она работала отлично. У меня только один вопрос, почему 7? –
7 равно 111 в двоичном виде, то есть три младших значащих бита :) –
Определенно, этот вид ответа, который я искал, спасибо :) –