起因:
一个元器件,给我的发的数据是高低位,两个寄存器。
迷茫的点:我怎么把这个高低位合并成一个数值?应该怎么合?怎么理解?
理解:高低16位,如下:
0000 0000 0000 0000 0000 0000 0000 0000
比如:int light=2; int low=5;
合并的话,高位必须左移16位:light=light<<16;
低位16位=5,即int result=low | light(有1即为1) 或者是 result=low+light;
这就是我们得到的数值,就是这样合并的。
当我们要分别写入寄存器的时候,我们需要这样操作:
//当我们需要将数据做成高低位写进寄存器的操作
int hight_2 = 131072;
int low_2 = 5;
hight_2 = hight_2 >> 16;
Console.WriteLine("当前高位数据右移16位后得到的数据为:"+hight_2);
int res2 = 0xFFFF & low_2;//低位与1与,都为1时才为1
Console.WriteLine("得到的低位数据为:"+res2);