单片机c语言 temp = (site-16)|0x40这句怎么理解?相减后不就是一个数字了吗?

uchar temp;
if(site<16)
temp = site;
else
temp = (site-16)|0x40;
temp |= 0x80;
LcdWriteCommand(temp,1);
if(flag==1)
LcdWriteCommand( 0x0d, 1);
else
LcdWriteCommand( 0x0c, 1);

第1个回答  2013-09-13
//可以看成
temp=site-16;

temp=temp|64;

在计算机里面运行的都是二进制,10进制、16进制是为了便于理解。16进制操作比较方便的操作二进制。
temp|0x40就相当于把temp这个变量中的第7位置1
temp|0100 0000
4 0本回答被提问者和网友采纳
第2个回答  2013-09-13
temp = (site-16)|0x40,大于16时,减16再与0x40可转换成ASCII码对应的字母。
0X41对应ASCII码的"A".追问

如果site>16 site就是个正整数 正整数|0x40是怎么与的?site<16 temp为负数,负整数|=0x08是怎么回事?

第3个回答  2013-09-13
计算出site-16数值后,后自动转换为16进制与0x40按位或,结果存到temp中
第4个回答  2013-09-13
site>16才从这里走,因为有if...else...
相似回答