您的位置: 主页>机器人编程>Python编程>Python基础练习实例48(计算绝对值,位运算实际应
加盟酷吧机器人 培养孩子核心能力

Python基础练习实例48(计算绝对值,位运算实际应

位操作也可以用来求绝对值,对于负数可以通过对其取反后加1来得到正数。对-6可以这样:11111010(二进制)–取反->00000101(二进制)-加1->00000110(二进制)来得到6。

因此先移位来取符号位,inti=a>>31;要注意如果a为正数,i等于0,为负数,i等于-1。然后对i进行判断——如果i等于0,直接返回。否之,返回~a+1。完整代码如下:

i#!/usr/bin/python

# -*- coding: UTF-8 -*-

def intmy_abs(a):

i = a >> 31

res = a if i == 0 else ~a + 1

return res

print(intmy_abs(-11))

现在再分析下。对于任何数,与0异或都会保持不变,与-1即0xFFFFFFFF异或就相当于取反。因此,a与i异或后再减i(因为i为0或-1,所以减i即是要么加0要么加1)也可以得到绝对值。所以可以对上面代码优化下:

#!/usr/bin/python

# -*- coding: UTF-8 -*-

def intmy_abs(a):

i = a >> 31

return ((a^i)-i);

print(intmy_abs(-11))

注意这种方法没用任何判断表达式,而且有些试题就要求这样做(^_^讲解过后应该是比较好记了)。

欧美思机器人教育加盟 赚钱好项目
上一篇:Python turtle 绘图画圆
下一篇:Python基础练习实例47(变换符号,位运算实际应用
您可能喜欢
​Python turtle 绘图画圆(2)
Python turtle 绘图画圆(2)
​python少儿编程发展怎么样?
python少儿编程发展怎么样?
​怎么用手机编写Python
怎么用手机编写Python
回到顶部