Convert vector of numeric values into a vector of equivalent 8-bit 'int8' binary values

5 visualizaciones (últimos 30 días)
Hi,
I am trying to convert a 1x4 numeric vector into the equivalent 8-bit binary 'int8' value which is also a 1x4 vector, however I am creating a 1x8 vector which appears to be the binary value of 8 which is the second element.
So each numeric element I want to convert to it's 8-bit 'int8' binary equivalent and store it in the same element in another vector.
Assuming I have not messed up my Two's Compliment I am expecting the row vector to be displayed as;
[10011110 01111000 01001111 00001000]
Any help would be appreciated.
x = [-98 8 49 120];
y = zeros(1,length(x));
for idx = 1:length(x)
y = bitget(x(idx),8:-1:1,'int8');
end
disp(y)
0 1 1 1 1 0 0 0

Respuesta aceptada

dpb
dpb el 19 de Jun. de 2024
x = [-98 8 49 120];
cellstr(dec2bin(int8(x)))
ans = 4x1 cell array
{'10011110'} {'00001000'} {'00110001'} {'01111000'}
  2 comentarios
Dan81
Dan81 el 20 de Jun. de 2024
Thanks for that.
I realised also that I applied the Two's Compliment to my positive integers which was a mistake.
I have not used cell arrays before, but I tried to include it in my original solution. It's not as efficient as your implementation.
x = [-98 8 49 120];
y = cell(length(x),1);
for idx = 1:length(x)
y{idx} = bitget(x(idx),8:-1:1,'int8');
end
disp(y)
{[1 0 0 1 1 1 1 0]} {[0 0 0 0 1 0 0 0]} {[0 0 1 1 0 0 0 1]} {[0 1 1 1 1 0 0 0]}

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Logical en Help Center y File Exchange.

Etiquetas

Productos


Versión

R2023a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by