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

2 次查看(过去 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 个评论
Dan Lardner
Dan Lardner 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 个)

产品


版本

R2023a

Community Treasure Hunt

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

Start Hunting!

Translated by