目录
1、什么是独热码
2、转换原理
3、c代码
1、什么是独热码
独热码( one-hot code)直观来说就是有多少个状态就有多少比特,而且只有一个比特为1,其他全为0
其表示方法如下表所示
十进制 | 二进制 | 独热码 |
0 | 000 | 00000001 |
1 | 001 | 00000010 |
2 | 010 | 00000100 |
3 | 011 | 00001000 |
4 | 100 | 00010000 |
5 | 101 | 00100000 |
6 | 110 | 01000000 |
7 | 111 | 10000000 |
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文章来源:https://www.toymoban.com/news/detail-696773.html
bin_code为二进制码文章来源地址https://www.toymoban.com/news/detail-696773.html
到了这里,关于独热码转二进制码(含代码)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!