MATLAB 函数 return 8 位十进制数

MATLAB function to return 8 bits of a decimal number

我正在尝试将一些 MATLAB 代码写入 return 我作为输入提供的十进制数的 8 位。 returned 的 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);

使用bitgetbitget 接受一个数字、矩阵、向量等,以及你想从输入中的每个数字中提取的位位置。或者,您可以指定假定的数据类型。在您的情况下,这不是可选的。确保将 uint8 指定为数据类型,因为我假设您需要 unsigned 8 位整数。

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

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

gcf_bits =

     1     1     0     1     1     1     1     0

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

如果你想要反转顺序,只需反转第二个输入的顺序即可:

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

gcf_bits =

     0     1     1     1     1     0     1     1