基础的十进制按位运算总结与在Python中的计算示例

 更新时间:2016年06月28日 16:43:19   作者:cangmean  
按位运算是计算机学习中的基础,Python完全支持位运算符从而几乎可以直接显示出位运算的结果,这里我们稍微总结一下基础的十进制按位运算总结与在Python中的计算示例

与运算 &
举例:
3&5                       
解法:3的二进制补码是 11,  5的是101, 3&5也就是011&101,先看百位(其实不是百位,这样做只是便于理解) 一个0一个1,根据(1&1=1,1&0=0,0&0=0,0&1=0)可知百位应该是1,同样十位上的数字1&0=0,个位上的数字1&1=1,因此最后的结果是1.(这之后本来应该还有一步,因为我们现在得到的数值只是所求答案的补码,但是因为正数的补码即是它本身,所以就省略了。不过,下面的例子就不能省略最后这一步了).   
-1&-2
解法:-1的补码是11111111,  -2的补码是11111110, 11111111&11111110得到的结果是:11111110,这个是补码,再转化位原码为100000010 (负数转换位原码的方法是减一取反),最后转换为十进制是 -2.
-2&6  
解法:-2的补码是11111110,  6的补码是110,   11111110&110,也就是11111110&00000110(这样写的目的是让初学者能够更好理解按位运算),按照上面的方法得到的结果是:110,转化位十进制就是6.
小技巧:利用按位与可以将任意二进制数的最后一位变为0,即就是X&0.

eg:

a = 5
b = 3

print a & b  

结果: 1
这是怎么算的呢,其实是通过a和b的二进制算的。

# a 的 b 的二进制
# 0*2**3 + 1*2**2 + 0*2**1 + 1*2**0
# 开始与运算
a = 0101
b = 0011

结果:0001
与运算就是比较a和b的二进制如果位数都为1则算为1,如果不想同或都为0则算为0。然后再把答案的二进制转为10进制。

或运算 |
举例:
4|7
解法:按位并的计算规律和按位与的很相似,只不过换了逻辑运算符,并的规律是: 1|1=1 ,1 |0=1, 0|0=0.   4|7转换位二进制就是:100|111=111.  二进制111即为十进制的7.
小技巧:利用按位并可以将任意二进制数的最后一位变为1,即就是X|1.
eg:

a = 5
b = 3

print a | b 

结果: print  7

a = 0101
b = 0011

a | b结果是:0111
或运算正好与与运算相反,如果位数都不为0则算为1,否则算为0。


异或操作
方法:对位相加,特别要注意的是不进位.     
举例:
2^5
解法:10^101=111,二进制111得到十进制的结果是7.
1^1
解法:1+1=0.(本来二进制1+1=10,但不能进位,所以结果是0)
-3^4
解法:-3的补码是11111101,4的补码是100 (也即00000100),11111101^00000100=11111101,补码11111101转为原码是1000111,即十进制的-7.

a = 5
b = 3

print a ^ b 

结果:6

a = 0101
b = 0011

a ^ b 结果是0110
异或操作是位数不想同则算为1,否则算为0。

左移与右移
1.左移运算符  <<
方法:X<<N 将一个数字X所对应的二进制数向左移动N位.
举例:
3<<2
解法:11向左移动两位变为1100,即12 .

2.右移动运算符  >>
方法:X>>N 将一个数字X所对应的二进制数向右移动N位.
举例:
3>>2
解法:11向右移动两位变为0.
10>>1
解法:10的二进制是1010,向右边移动一位是101,即5.

a = 5
b = 2

print a << b

结果是20       
a = 0101
b = 2

a << b结果:10100
位移运算会把二进制数向左或向右移动,如上就是向左移动了2个单位。

相关文章

  • 使用Python实现获取网页指定内容

    使用Python实现获取网页指定内容

    在当今互联网时代,网页数据抓取是一项非常重要的技能,本文将带你从零开始学习如何使用Python获取网页中的指定内容,希望对大家有所帮助
    2025-03-03
  • python使用selenium实现批量文件下载

    python使用selenium实现批量文件下载

    这篇文章主要介绍了python使用selenium实现批量文件下载,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03
  • Python入门教程2. 字符串基本操作【运算、格式化输出、常用函数】

    Python入门教程2. 字符串基本操作【运算、格式化输出、常用函数】

    这篇文章主要介绍了Python字符串基本操作,结合实例形式总结分析了Python字符串的基本表示、运算、格式化输出、常用函数等,注释包含较为详尽的说明,便于理解,需要的朋友可以参考下
    2018-10-10
  • Matplotlib绘图基础之坐标轴详解

    Matplotlib绘图基础之坐标轴详解

    Matplotlib的坐标轴是用于在绘图中表示数据的位置的工具,也是为了帮助观察者了解图像中数据的位置和大小,下面小编就来和大家详细聊聊Matplotlib绘图时坐标轴的具体使用吧
    2023-07-07
  • Django 导出 Excel 代码的实例详解

    Django 导出 Excel 代码的实例详解

    本篇文章主要介绍了Django 导出 Excel 代码的实例详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08
  • python列表的常用操作方法小结

    python列表的常用操作方法小结

    这篇文章主要为大家详细介绍了python字典的常用操作方法,主要内容包含Python中列表(List)的详解操作方法,包含创建、访问、更新、删除、其它操作等,需要的朋友可以参考下
    2016-05-05
  • Python入门变量的定义及类型理解

    Python入门变量的定义及类型理解

    本文适合编程语言零基础的初学者,有打算转行学习python的可以添加关注,后续小编将会把自己转行学pyhton语言以来的所有笔记,和工作中总结的一些开发经验分享给大家
    2021-09-09
  • python numpy 一维数组转变为多维数组的实例

    python numpy 一维数组转变为多维数组的实例

    今天小编就为大家分享一篇python numpy 一维数组转变为多维数组的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-07-07
  • python中的插值 scipy-interp的实现代码

    python中的插值 scipy-interp的实现代码

    这篇文章主要介绍了python中的插值 scipy-interp的实现代码,需要的朋友可以参考下
    2018-07-07
  • Python中顺序表原理与实现方法详解

    Python中顺序表原理与实现方法详解

    这篇文章主要介绍了Python中顺序表原理与实现方法,结合实例形式分析了Python顺序表的概念、原理及增删查等相关实现技巧,需要的朋友可以参考下
    2019-12-12

最新评论