首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 单片机 >

简单的C语言位操作有关问题,

2012-04-05 
简单的C语言位操作问题,急急急急!各位大神帮我看看怎么把一下数值重新组合为一个新的16进制数DataB&0xc000

简单的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位置)。怎么做??

[解决办法]

Assembly code
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;

热点排行