简单的C语言位操作问题,急急急急!
各位大神帮我看看怎么把一下数值重新组合为一个新的16进制数
DataB&0xc000 //取最高两位
DataE&0xa380 //取7、8、9、12、15位
DataB和DataE都是16bit的,我想把DataB的最高2位和DataE的第7、8、9、12、15位共7位重新组合为一个新的8bit的数值。(这6个放在0—6位置)。怎么做??
[解决办法]
assign c[6:0]={DataE[15],DataE[12],DataE[9],DataE[8],DataE[7],DataB[1],DataB[0]};
[解决办法]
多想想从 与 或 这方面着手吧
[解决办法]
temp1 = DataB&0xc000 | DataE&0xa380
行不
[解决办法]
第一位 temp = temp | ( DataB&0x40) >> 5
第二位 temp = temp | ( DataB&0x80) >> 6
....
[解决办法]
可以参考下位域和union的用法
typedef union{
struct {
short bit0;
short bit1;
......
short bit15;
}bit;
short b16;
}DataB;