MATLAB函数返回8位十进制数

MATLAB函数返回8位十进制数,matlab,function,bitwise-operators,Matlab,Function,Bitwise Operators,我试图编写一些MATLAB代码来返回作为输入提供的十进制数的8位。返回的8位将稍后在Simulink模型中使用。实现这一目标的最佳方式是什么?这是我试过的 gcf = 123; bitwise_gcf = dec2bin(gcf,8); gcf_bit1 = bitwise_gcf(0); gcf_bit2 = bitwise_gcf(1); gcf_bit3 = bitwise_gcf(2); gcf_bit4 = bitwise_gcf(3); gcf_bit5 = bitwise_gc

我试图编写一些MATLAB代码来返回作为输入提供的十进制数的8位。返回的8位将稍后在Simulink模型中使用。实现这一目标的最佳方式是什么?这是我试过的

gcf = 123;

bitwise_gcf = dec2bin(gcf,8);

gcf_bit1 = bitwise_gcf(0);
gcf_bit2 = bitwise_gcf(1);
gcf_bit3 = bitwise_gcf(2);
gcf_bit4 = bitwise_gcf(3);
gcf_bit5 = bitwise_gcf(4);
gcf_bit6 = bitwise_gcf(5);
gcf_bit7 = bitwise_gcf(6);
gcf_bit8 = bitwise_gcf(7);
使用
bitget
获取数字、矩阵、向量等以及要从输入中的每个数字中提取的内容的位位置。或者,您可以指定假定的数据类型。在您的情况下,这不是可选的。请确保指定
uint8
作为数据类型,因为我假设您想要无符号的8位整数

对于我们的特定情况,您希望输入为单个数字,并且位位置由从1到8的向量指定,就像您希望
uint8
数字的所有位一样。输出将是一个位数组,其中该数组中的每个位置都提供从输入编号中提取的位

>> gcf = 123;
>> gcf_bits = bitget(gcf, 1:8, 'uint8')

gcf_bits =

     1     1     0     1     1     1     1     0
gcf_位
将是一个8元素数组,其中每个元素为您提供第i位,从1-最低有效位到8-最高有效位

如果您想要颠倒顺序,只需颠倒第二个输入的顺序:

>> gcf = 123;
>> gcf_bits = bitget(gcf, 8:-1:1, 'uint8')

gcf_bits =

     0     1     1     1     1     0     1     1

但是,我刚刚注意到位与实际二进制数相反,但这不是问题。:)@ShankarKumar-是:)只要做
bitget(gcf,8:-1:1,'uint8')<代码>1:8
获取指向MSB的LSB。如果您想要相反的顺序,则需要将输入位位置向量指定为相反的。@ShankarKumar-我已进行了编辑,以确保两种情况都得到遵守。此外,还需要
dec2bin(gcf,8)-'0'
de2bi(gcf,8)
work@LuisMendo-是的,那可能有用D
de2bi
是通信工具箱的一部分,所以我尽量远离它。