- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在用 Java 编写一个 x86 解释器,并且有一个 Python 脚本可以使用 NASM 来测试我的 x86 指令的实现与实际对应的指令的实现。根据此测试,除了进位标志之外,所有标志都设置正确。有趣的部分是:
long result;
switch (op) {
case ADD:
result = Math.abs(x) + Math.abs(y);
if (result > U_MAX)
registers.carry_flag = true;
else
registers.carry_flag = false;
break;
其中 U_MAX 为 4294967295L(全部 32 位设置)。
我发现的所有答案都没有意识到进位和溢出是两个不同的东西。那么,如何在Java中正确实现进位标志呢?
最佳答案
所有这些绝对值业务都是不必要的,而且坦率地说令人困惑,并且它具有 Math.abs(Integer.MIN_VALUE)
的边缘情况。是负数(当你认真思考它时,这并不奇怪,但它看起来不像这段代码所期望的),你可以用更简单的方法计算进位。
例如,使用旧的“结果是无符号的小于一个操作数”。结果当然只是x + y
(如 int
),符号与加法无关。然后使用Java 8,您可以使用 Integer.compareUnsigned ,否则您可以使用此身份:
x <u y = (x ^ Integer.MIN_VALUE) <s (y ^ Integer.MIN_VALUE)
哪里<u
和<s
分别是无符号小于和有符号小于。
您还可以计算(x & 0xffffffffL) + (y & 0xffffffffL)
并将其用于结果(转换为 int
)和进位标志(第 33 位)。
关于java - 计算进位标志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31170203/
有什么方法可以获取 Python 中移位操作移出的位,例如 x86 汇编中的进位标志? 我搜索了 python 手册和互联网,但似乎找不到任何有用的东西。 我需要它来检查整数是奇数 (CF=1) 还是
众所周知,CF表示无符号进位,OF表示有符号溢出。那么,汇编程序如何区分无符号和有符号数据,因为它只是一个位序列? (通过类型信息的附加内存存储,或通过位置信息或其他?)这两个标志可以互换使用吗? 最
我有一个 df ,如下所示: | id | qty | item | +-----+------+------+ | 001 | 700 | CB04 | | 002 | 500 | NaN
我是一名优秀的程序员,十分优秀!