关于补码在编程中的问题

2025-01-24 10:35:12
推荐回答(2个)
回答1:

如果仅仅看到一个二进制串11111100,它可能代表-4,也可能代表252。具体要看你怎么定义了。

在编程时,如果你定义
singed int a,b
b=a/64;
那么编译后的汇编程序会把11111100当作-4处理,然后按照补码运算的规则用一段汇编子程序完成/64的功能。

在编程时,如果你定义
unsinged int a,b
a="11111100"
b=a/64;
那么编译后的汇编程序会把11111100当作252处理,然后可能用几条汇编指令右移5位完成/64的功能。

回答2:

通常的二进制带符号数的减法运算,不是这样的。
这个程序,只能计算“以原码形式”保存的、带符号数的减法运算。
这个程序,只是个特例。