gpt4 book ai didi

python - 用 C 和 Python 实现汇编程序

转载 作者:行者123 更新时间:2023-11-30 17:02:13 24 4
gpt4 key购买 nike

我试图理解一段汇编程序,但没有解释:

;x is stored at 8(%ebp)

movl 8(%ebp), %edx
movl $0, %eax
testl %edx, %edx
je .L7

.L10:
xorl %edx, %eax
shrl %edx
jne .L10

.L7:
andl $1, %eax

我用 C 和 Python 实现它:

unsigned fun_a(unsigned x) {
int val = 0;
while (x != 0) {
val = val ^ x;
x = x >> 1;
}
return val && 1;
}

def fun_a(x):
val = 0
while x != 0:
val = val ^ x
x = x >> 1
return val & 1

但结果却产生了不同的结果:

//C
fun_a(0) = 0
fun_a(1) = 1
fun_a(2) = 1
fun_a(3) = 1
fun_a(4) = 1
fun_a(5) = 1
fun_a(6) = 1
fun_a(7) = 1
fun_a(8) = 1
fun_a(9) = 1

#Python
fun_a(0) = 0
fun_a(1) = 1
fun_a(2) = 1
fun_a(3) = 0
fun_a(4) = 1
fun_a(5) = 0
fun_a(6) = 0
fun_a(7) = 1
fun_a(8) = 1
fun_a(9) = 0

我的 C/Python 程序出了什么问题?

最佳答案

在 c 中,您返回 val && 1,这是一个逻辑与。在 python 中,返回 val & 1 是按位的。

关于python - 用 C 和 Python 实现汇编程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36665933/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com