Учитывая массив целых чисел:быстрый способ для десятичного в двоичные преобразования
X = [1, 3, 3, 3,2,3 ,1,1,2,3]
Я хочу, чтобы преобразовать каждое число в 4 разрядных двоичном эквивалент. Я сделал следующее, но результат неверен. Кажется, что MSB и LSB меняются на противоположные. Я пробовал использовать функцию MATLAB с decimal_to_bin =dec2bin(X)
, но даже этот вывод ошибочен.
Как это исправить?
X = [1, 3, 3, 3,2,3 ,1,1,2,3];
b = 4;
lookup_table = generate_lookupTable(b);
BinaryX = lookup_table(X,:);
function result = generate_lookupTable(b)
% generate binary code
k = 2^b;
result = zeros(k,b);
for i=1:k
for j=1:b
result(i,j) = bitand(uint8(2^(j-1)),uint8(i-1))/uint8(2^(j-1));
end
end
end
Выход, который я получил, BinaryX
0 0 0 0
0 1 0 0
0 1 0 0
0 1 0 0
1 0 0 0
0 1 0 0
0 0 0 0
0 0 0 0
1 0 0 0
0 1 0 0
Если вы посмотрите на документацию для 'dec2bin', вы увидите, что она принимает два аргумента. Если вы называете его 'dec2bin (X, 4)', который должен дать желаемый результат. – Trogdor
Код, который вы опубликовали, не запускается, поэтому вам нужно немного улучшить его, если вы хотите получить его, чтобы он работал – Trogdor
@beak: Я пытаюсь реализовать таблицу поиска, и код предназначен для генерации поиска Таблица. Но ответ, возвращенный таблицей поиска, ошибочен –