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

7 次查看(过去 30 天)
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

采纳的回答

dpb
dpb 2024-6-19
x = [-98 8 49 120];
cellstr(dec2bin(int8(x)))
ans = 4x1 cell array
{'10011110'} {'00001000'} {'00110001'} {'01111000'}
  2 个评论
Dan81
Dan81 2024-6-20
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]}

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Numeric Types 的更多信息

产品


版本

R2023a

Community Treasure Hunt

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

Start Hunting!

Translated by