独热码转二进制码(含代码)

目录

1、什么是独热码

2、转换原理

 3、c代码


1、什么是独热码

独热码( one-hot code)直观来说就是有多少个状态就有多少比特,而且只有一个比特为1,其他全为0

其表示方法如下表所示

十进制二进制独热码
000000000001
100100000010
201000000100
301100001000
410000010000
510100100000
611001000000
711110000000

2、转换原理

 对于独热码,若想表示十进制数x,则第x位为“1”,其他位为“0”

而二进制码,以3bit数为例,其值用十进制表示为:x。

若x>=4(2^2),则对于第2位,值为“1”,否则为0;x>=(2^2)

若(x-4)>=2,则对于第1位,值为“1”,否则为0;(x-(2^2))>=(2^1)

若(x-4-2)>=1,则对于第0位,值为“1”,否则为0;(x-(2^2)-(2^1))>=(2^0)

 3、c代码

#include <stdio.h>
#include <math.h>

int main(void) {
    int i,j,k,x,y,z;
    int or_bit[4][16];
    int bin_code[4];
    int true_one_hot_code[16] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0};
for(i=0;i<4;i=i+1) {
        for(k=0;k<16;k=k+1) {
            z= pow(2,i+1);
            x = k % z;
            y = pow(2,i);
            if(x<y) {
                or_bit[i][k] = true_one_hot_code[15-k];
            }
            else{
                or_bit[i][k] = 0;
            }
        }
        bin_code[i] = (or_bit[i][0] | or_bit[i][1] | or_bit[i][2] | or_bit[i][3] | or_bit[i][4] | or_bit[i][5] | or_bit[i][6] | or_bit[i][7] | or_bit[i][8] | or_bit[i][9] | or_bit[i][10] | or_bit[i][11] | or_bit[i][12] | or_bit[i][13] | or_bit[i][14] | or_bit[i][15]);
        printf("bin_code[%d] = %d \n",i,bin_code[i]);
}

    return 0;
}

其中true_one_hot_code为16bit独热码,最右侧为第0bit

bin_code为二进制码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值