【发布时间】:2017-06-11 14:30:27
【问题描述】:
我是 C 新手,使用串行设备,我有这行:
short DA, DacData;
DA=0xFFF;
DacData = ((channel&0x03)<<14)|((serialA&0x03)<<12)|(DA&0x6AA);
如何在循环中只增加 DacData (DA&0x6AA) 的最后一部分?提前致谢!
【问题讨论】:
-
你关心最后一部分溢出吗?
-
不确定。可能不会!
-
那么就是简单的
++DacData... -
@StoryTeller 这会改变 ((channel&0x03)
-
这个问题比较奇怪!
DA&0x6AA等价于DA&0b11010101010,只是屏蔽了零位。你确定递增的结果是你想要的吗?如果您真的只想设置最后一位,请使用DA & 0x6AA | 0x1,这样下一个人就不会在 10 分钟内摸不着头脑。由于您每次都屏蔽了 lsb,因此增量永远不会执行 lsb。
标签: c hex mbed compound-assignment