JackRyannn Blog
  • /home
  • /archive
  • /tags
  • /about
  • /RSS

位运算在编程中的使用

28 May 2017
  • 技术博客

判断奇偶数

用i和二进制数1进行 & 与 运算,1为奇数,0为偶数

	i = 99
	if i&0b1:
	    print("奇数")
	else:
	    print("偶数")
    

output: 奇数

交换元素

三次异或运算可以把两个元素直接交换而不利用第三个元素。

	a = 5
	b = 6
	a = a^b
	b = a^b
	a = a^b
	print(a,b)
	

output: 6 5

求绝对值

不使用判断语句求绝对值

	i = -5
	s = i>>31
	print((i^s)-s)
	

output:5

原理:

i»31得到符号位,可能的结果的0和-1

i^s: 与0异或仍然是本身,与-1(0*ffffffff)异或是取反,包括符号位。

再减去 i:减0相当于没减,减-1相当于加1,取反加1相当于取相反数。

这样就实现了求绝对值。

最近文章

  • 美团日报
  • 美团日报
  • 美团日报
  • 美团日报
  • 美团日报

标签

  • Android
  • 服务器
  • 个人日记
  • Java
  • Andriod
  • 算法
  • Gaker
  • 转载
  • 技术博客

JackRyannn © 2015

Follow me
  • Github