什么是位运算

位运算就是把数字当成二进制来进行计算,位运算有六种:&(与), |(或), ^(异或), ~(非), <>(右移)

&(与)

&运算规则:两个位都为1,结果为1,否则为0

# &(与)

a = 3

b = 9

print(a & b)

# a----0101

# b----1001

# a&b--0001

# a&b=1

## |(或)

|运算规则:两个位至少有一个为1,结果为1,否则为0

```python

# |(或)

a = 3

b = 9

print(a | b)

a----0101

b----1001

a|b--1101

a|b=11

## ^(异或)

^运算规则:两个位不同,结果为1,否则为0

```python

# ^(异或)

a = 3

b = 9

print(a ^ b)

# a----0101

# b----1001

# a^b--1100

# a^b=10

## ~(非)

~运算规则:对所有位取反,1变成0,0变成1

```python

a = 5

print(~a)

猜猜结果是多少?是不是以为是2,哈哈哈

看一下打印结果

```python

-6

what? 检查下计算过程

# a----101

# ~a--010

# ~a=2

按照运算规则,没错啊

这是为什么呢?其实,计算机中是以补码的形式来进行计算的

对于正数:

原码=反码=补码

对于负数:

反码=原码的符号位不变,其余位取反;

补码=反码+1

使用sys.getsizeof可以查看对象在内存空间占用的大小

import sys

a = 5

print(sys.getsizeof(a)) # 28

说明a在内存中占的位数是28

现在我们来一步一步等推算~a

a的二进制形式

0000 00000000 00000000 00000101

由于运算是以补码的形式进行,因此要将原码转化成补码,由于a为整数,因此其补码就等于原码

```python

# a的补码

0000 00000000 00000000 00000101

对a的补码进行~运算,结果为

```python

# 结果的补码

1111 11111111 11111111 11111010

到这里要注意了,计算机运算的时候是以补码的形式,但是显示到终端上还是以原码的形式,因此我们要把结果再转化回原码

由于结果为负数(符号为1),先把补码转化成反码,反码=补码-1

# 结果的反码

1111 11111111 11111111 11111001

再计算结果的原码

# 结果的原码

1000 00000000 00000000 00000110

再把结果的二进制转化成十进制形式,符号为1说明是负数,-(4+2)= -6,因此结果为-6

上面的计算过程只是让我们对计算机如何进行位运算有一个认识,实际上对于任意数a,~a = -(a+1),根本不用手工转化成二进制计算

## <

<

```python

a = 9

print(a << 2) # 36

对于整数a,a<

## >>(右移位)

'>>'的规则:运算数的各二进位全部右移若干位,>> 右边的数字指定了移动的位数

```python

a = 9

print(a >> 2) # 2

对于整数a,a<

python与或非位运算_python位运算相关推荐

  1. python 幂运算_python幂运算

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! "**"运算这个"**"比较简单,就是标 ...

  2. python浮点数怎么运算_Python 浮点数运算

    浮点数用来存储计算机中的小数,与现实世界中的十进制小数不同的是,浮点数通过二进制的形式来表示一个小数.在深入了解浮点数的实现之前,先来看几个 Python 浮点数计算有意思的例子: 0.1 == 0. ...

  3. python中集合运算_python集合运算

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 每个韦恩(venn)图中的红色部分是给定集合运算得到的结果.? python 集 ...

  4. python位运算符_Python位运算符

    操作符1 名称:& 描述:按位与运算符 示例: #!/usr/bin/python # -*- coding: UTF-8 -*- # 定义变量,通过赋值运算符赋值"=" ...

  5. python复数的概念及运算_python 复数运算

    复数的数学运算 复数可以用使用函数 complex(real, imag) 或者是带有后缀j的浮点数来指定.比如: >>> a = complex(2, 4) >>> ...

  6. python语言是不是非开源语言_python是开元语言吗?

    展开全部 Python语言是一门通用语言,google的搜索引擎.纽交所的在线交易中间的很多功62616964757a686964616fe4b893e5b19e31333433626535能都是py ...

  7. python 列表运算_python列表运算详解

    1.列表相加 通过列表相加的方法生成新列表.color1 = ['green','blue','pink','red'] color2 = ['black','white'] color = colo ...

  8. python 整数逆位运算_python训练营:注释、运算符、数据类型与位运算

    天学习的内容整理成脑图如下,其中带☆的是需要重点掌握的模糊知识点,需要加强训练和记忆. 二.具体学习内容 2.1 注释 2.1.1 多行注释 2.1.2 长字符串注释 2.2 运算符 2.2.1 算术 ...

  9. python左移位运算_python 移位运算符只能用于整型吗

    匿名用户 1级 2016-12-29 回答 什么是操作符? 简单的回答可以使用表达式4 + 5等于9,在这里4和5被称为操作数,+被称为操符. Python语言支持操作者有以下几种类型. 算术运算符 ...

最新文章

  1. MVC ---- EF高级增删改
  2. 受软银收购利好影响 ARM股价大涨近50%
  3. Spring 中获取servletContext及WebApplicationContext以及applicationContext三者之间的关系
  4. Centos系统使用代理上网时 yum的代理设置
  5. 简述python3默认使用的编码标准_Python3.X默认使用的编码是
  6. 如何让js在浏览器宽度改变的时候执行一个函数?浏览器宽度变化
  7. python生成器的作用是什么_看完这篇,你就知道Python生成器是什么
  8. Unity3D数学工具(Mathf)
  9. JMeter使用教程-压测
  10. GetShell的姿势总结
  11. 设置局域网内共享磁盘
  12. 今日话题:蜗居在大城市的生活
  13. 阿里云团队漏洞托管、渗透测试、攻防演练
  14. WP系统一次订阅,终身锁屏同时显示农历和天气
  15. leek()函数使用
  16. 电脑自带字体包的文件夹位置
  17. 电路设计常识必备的知识
  18. 肇庆学院与韶关学院计算机专业,2016韶关学院VS肇庆学院 基于排名角度的比较?...
  19. keil提示仿真器SWD/JTAG Communication Failure的问题解决
  20. ItemIDList结构(文件路径的转换)

热门文章

  1. 为什么要用MyBatis-Hibernate
  2. ActiveMQ入门-ActiveMQ环境搭建
  3. spring基于XML的声明式事务控制-配置步骤
  4. SpringBoot新版
  5. Zuul鉴权和添加用户服务
  6. Bootstrap组件_下拉菜单
  7. SpringBoot服务整合(整合邮件服务、定时调度、Actuator监控)
  8. JAVA多线程和并发
  9. laravel artisan 后台运行_3分钟短文:Laravel用户自定义命令行简明教程
  10. xxl-job 2.1.1执行器源码解读