matlab基础之——将8位二进制数组合成为十进制数

    科技2022-08-19  122

    目标 将 a = [0 0 0 1 0 0 0 0] 二进制数组 变为十进制数值

    新建函数 把代码复制黏贴到里面 保存

    function [ y ] = bit2hex(x ,dir) % 8位二进制数转换成 十进制数 % y为hex十进制输出,x为输入的8位二进制数组 % d7 d6 d5 d4 d3 d2 d1 d0 % dir = 1(高位是d0,低位是d7) % = 0(高位是d7,低位是d0) y = 0; for i = 1:8 if( dir == 1) y = y + x(i)*2^(i-1) ; else y = y + x(i)*2^(8-i); end end end

    保存后为这样的 名字跟函数名字要一样 不要有中文名称

     

     

    a为需要变换的数组, b为十进制保存 参数dir=1时为 d0d1d2d3d4d5d6d7 ; dir=0时为我们熟悉的顺序d7d6d5d4d3d2d1d0

     

     

    有时会用到截断头 或者截断尾(符号位)

    function [ y ] = bit2hex(x ,dir,HeadOrEnd) % 8位二进制数转换成 十六进制数 % y为hex十六进制输出,x为输入的8位二进制数组 % d7 d6 d5 d4 d3 d2 d1 d0 % dir = 1(高位是d0,低位是d7) % = 0(高位是d7,低位是d0) % HeadOrEnd=1 把第一位截断(赋值为0即可) % =0 把最后一位截断 y = 0; if(HeadOrEnd == 1) x(1)=0; else x(8)=0; end for i = 1:8 if( dir == 1) y = y + x(i)*2^(i-1) ; else y = y + x(i)*2^(8-i); end end if(dir==0 && HeadOrEnd==0) || (dir==1 && HeadOrEnd==1) y=y/2; end

     

     

    注意这个截高/低位之后 是会右移的(整数除以2就是右移1位)

    同理低位在前

    Processed: 0.017, SQL: 9