我有一个变量:
ushort statusRegister;
该变量通过设置或清除其个体位来跟踪各种计算的结果。这些位定义为:
鉴于以下内容:
Ushort varA = 0x8B;
Ushort varb = 0x24;
Ushort result = varA + varB;
如果给定计算结果,如何设置或清除这些单独的位?我无法弄清楚如何确定计算是否导致进位或半进位或是否发生溢出。
感谢您的任何建议
答案 0 :(得分:0)
经过额外讨论后,这是答案。考虑到反馈意见后要简单得多。
但是,我只关注进位位作为如何处理statusRegister中每个位的示例。不确定是否需要我们扩展其他位。
因此更新寄存器将类似于:
<add key="quartz.jobStore.driverDelegateInitString" value="triggerPersistenceDelegateTypes=SolutionName.QuartzService.Core.Triggers.CustomTriggerPersistenceDelegate, SolutionName.QuartzService.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
根据您的情况,您可能需要或不需要在迭代之间清除状态寄存器。如果是这样,你可以这样:
bool carry = result < Math.Max(varA, varB);
statusRegister |= (ushort)((carry) ? 0x1 : 0x0); //set the carry bit