- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
有什么方法可以获取 Python 中移位操作移出的位,例如 x86 汇编中的进位标志?
我搜索了 python 手册和互联网,但似乎找不到任何有用的东西。
我需要它来检查整数是奇数 (CF=1) 还是偶数 (CF=0),并在一个命令中将其除以二。我知道我可以通过以下方式模仿预期的行为:
if x & 1==1: CF=1
else: CF=0
在我看来,这似乎是不必要的编码,或者我对 python 的期望很高。
最佳答案
在 Python 中没有“移位并返回进位标志”操作——或者,实际上,在几乎所有高级语言中都没有。即使在 C 中,y = x >> 1
编译为您手动编写的完全相同的机器语言操作,并且您知道进位标志具有您想要的内容,但无法访问它.
但是,您自己也很容易做到这一点。而不是这个:
rest = x>>1
cf = get_carry_flag()
……你这样做:
rest, cf = x>>1, x&1
它更紧凑——也可能更快。请记住,这是 Python; x>>1
不是转换成单个移位操作码,而是转换成字节码序列,解释器通过调用一个函数来处理该字节码,该函数跟随一个指向代表任意长度的链表的指针整数和移位……
对于另一种方式的移位, 左移没有溢出,因此您必须完全 %
离开最高位。一旦你这样做了,在丢弃它之前记住最高位就不是什么额外的负担了。
关于python - python bitwise shift 进位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19282891/
有什么方法可以获取 Python 中移位操作移出的位,例如 x86 汇编中的进位标志? 我搜索了 python 手册和互联网,但似乎找不到任何有用的东西。 我需要它来检查整数是奇数 (CF=1) 还是
众所周知,CF表示无符号进位,OF表示有符号溢出。那么,汇编程序如何区分无符号和有符号数据,因为它只是一个位序列? (通过类型信息的附加内存存储,或通过位置信息或其他?)这两个标志可以互换使用吗? 最
我有一个 df ,如下所示: | id | qty | item | +-----+------+------+ | 001 | 700 | CB04 | | 002 | 500 | NaN
我是一名优秀的程序员,十分优秀!