【问题标题】:convert int array to binary array将 int 数组转换为二进制数组
【发布时间】:2014-03-15 16:20:14
【问题描述】:

目前在 matlab 中我有 int 数组 a=[8 3 2 1]; 我想将其转换为每个四位的二进制数组。

对于上面的 int 数组,我会得到以下二进制数组 binary=[1000 0011 0010 0001];

我尝试了下面给出的代码:

binary = dec2bin([8 3 2 1],4)

我得到的答案是:

1000
0011
0010
0001

它是一个列矩阵。 但我需要一个行矩阵。 [1000 0011 0010 0001]

谁能帮帮我????

提前致谢。

【问题讨论】:

    标签: arrays matlab


    【解决方案1】:

    如果不需要前导零,可以使用:

    binary = str2num(dec2bin([8 3 2 1],4))'
    

    这会给你:

    binary =
    
            1000          11          10           1
    

    如果你想要前导零,你可以使用:

    binary = cellstr(dec2bin([8 3 2 1],4))'
    

    这会给你:

    binary = 
    
        '1000'    '0011'    '0010'    '0001'
    

    编辑:要取数组每一位的补码,可以使用:

    cmp = cellstr(dec2bin(bitcmp([8 3 2 1],4),4))'
    

    你会得到:

    cmp = 
    
        '0111'    '1100'    '1101'    '1110'
    

    【讨论】:

    • @lara 和方法#1一样,你可以得到不带前导零的二进制数。
    • 但是我需要前导零,因为我需要取数字中每个位的补码。也就是说,如果它是 0011 ,那么它会更改为 1100。所以我需要 4 位表示。
    猜你喜欢
    • 2016-05-12
    • 1970-01-01
    • 1970-01-01
    • 2016-11-30
    • 2016-05-07
    • 1970-01-01
    • 2013-11-08
    • 1970-01-01
    • 2013-11-05
    相关资源
    最近更新 更多