python语⾔中1010的⼆进制表⽰_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)可知百位应该是0,同样⼗位上的数字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.
按位并    |
举例:
4|7
解法:按位并的计算规律和按位与的很相似,只不过换了逻辑运算符,并的规律是: 1|1=1 ,1 |0=1, 0|0=0.  4|7转换位⼆进制就
是:100|111=111.  ⼆进制111即为⼗进制的7.
⼩技巧:利⽤按位并可以将任意⼆进制数的最后⼀位变为1,即就是X|1.
按位异或    ^
⽅法:  对位相加,特别要注意的是不进位.
举例:
2^5
解法:10^101=111,⼆进制111得到⼗进制的结果是7.
1^1
解法:1+1=0.(本来⼆进制1+1=10,但不能进位,所以结果是0)
-3^4
解法: -3的补码是11111101,4的补码是100 (也即00000100), 1111 1101^0000 0100=1111 1001,补码1111 1001转为原码是1000 0111,即⼗进制的-7.
按位翻转  ~
⽅法: 将⼆进制数+1之后乘以-1,x的按位翻转是-(x+1) . 注意,按位运算符是单⽬运算符.  -9 ,  1+~4是正确的,5~3就不对了.
这是更快捷的按位翻转算法,也可以按部就班每位按位取反(包括符号位),最后如果是负数再转为原码
举例:
~3
解法:3的⼆进制是11, -(11+1)=-100B=-4D. (注:B和D分别表⽰⼆进制和⼗进制).
~-2
解法:  -  (-10+1)  =1 【即(b)10 - 1 = 01】  【此⽅法不涉及补码】
或者:-2在计算机中存储为补码:1111 1110,按位取反得~1111 1110 = 0000 0001即为1
左移运算符  <<
⽅法:    X<
举例:
3<<2二进制转换10进制快捷方法
解法:11向左移动两位变为1100,即12 .
右移动运算符  >>
⽅法:    X>>N 将⼀个数字X所对应的⼆进制数向右移动N位.
举例:
3>>2
解法:11向右移动两位变为0.
10>>1
解法:10的⼆进制是1010,向右边移动⼀位是101,即5.
C语⾔中的按位移动及其简单引⽤
C语⾔中的按位移动及其简单应⽤ 在C语⾔中按位左移⽤”<>”表⽰. 按位左移和按位右移运算经常被⽤来替换乘⼆和除⼆运算,但是要注意,这两者之间并不完全等 ...
【转】Cocoa中的位与位运算
Python语⾔中各种进制相互转换
Python语⾔中的关键字(⾃⼰做的读书笔记)
电脑配置:联想笔记本电脑 windows8系统 Python版本:2.7.8 本⽂章撰写时间:2015.1.1 作者:陈东陈 阅读说明: 1.本⽂都是先解释,后放图⽚: 2.⽂中斜体部分要么为需要输⼊ ...
python语⾔中的编码问题
在编程的过程当中,常常会遇到莫名其妙的乱码问题.很多⼈选择出了问题直接在⽹上答案,把别⼈的例⼦照搬过来,这是快速解决问题的⼀个好办法.然⽽,作为⼀个严谨求实的开发者,如果不从源头上彻底理解乱码产⽣的 ...
C语⾔回顾-函数和位运算
1.函数的概述 功能独⽴的代码块 C语⾔由若⼲函数组成 1)从定义分,库函数和⽤户定义函数两种 2)从返回值分,有返回值函数和⽆返回值函数 3)从参数分,⽆参函数和有参函数
2.形参和实参 1)形参定 ...
Python 进制转换、位运算
⼀.进制转换 编程⽤⼗进制,⼗进制转换为⼆进制.⼋进制.⼗六进制 In [135]: bin(23) Out[135]: '0b10111' In [136]: oct(23) Out[136]: ' ...
C+&plus;中巧妙的位运算
位运算要多想到与预算和异或运算,并常常将两个数对应位上相同和不同分开处理 ⼀.x&(x-1)消除x⼆进制中最右边的⼀个1. 这个⽐较厉害,⽐如统计某个 ⼆.与和异或的巧妙结合的思想 与运算可以 ...
了解 Python 语⾔中的时间处理
python 语⾔对于时间的处理继承了 C语⾔的传统,时间值是以秒为单位的浮点数,记录的是从1970年1
⽉1⽇零点到现在的秒数,这个秒数可以转换成我们⽇常可阅读形式的⽇期和时间:我们下⾯⾸先来看⼀下p ...
随机推荐
Android SQLite数据储存⽅式
SQLiteOpenHelper 类 ⽤SQLiteOpenHelper 类中的 getWritableDatabase()和getReadableDatabase()⽅法可以获得数据库的引⽤.为了 ...
⽤NDK编译lua库
Android.mk是这样的 LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := lua LOCAL_SRC_FILE ...
Linux 引导过程内幕
Struts2 中和Action的调⽤关系(写的很好)
Django的admin视图的使⽤
要现在admin.py⽂件中将你要视图化操作的类进⾏注册: ib import admin from api import models # Register you ...
xdcms_3.0.1 | 代码审计
这周的审计任务,这次审计 xdcms . 下⾯就开始审计之旅.                                                                    ...
Lucene基础学习笔记
在学校和⽼师⼀起做项⽬,在⽼师的推荐下深⼊学习了⼀些SqlServer的知识,看⼀些书下来哎也没记住多少,不过带来了新疑问. 不使⽤模糊查询,我应该⽤什么呢?如何能不影响数据库性能,还能做模糊查询呢? ...
python环境杂谈
最近发现集⾥的服务器上有多个python环境,版本相同的python也有多个,主要区别是site-packages⾥安装的模块不同,这样配置的好处是不同类型的项⽬可以使⽤⾃⼰的python环境,不会 ...
在Windows使⽤VC编译ICU
1 编译过程在Cygwin下进⾏,所以必须得安装Cygwin,并且加上Automake, autoconf, make, ar等选项
2 打开命令⾏窗⼝,设置环境变量,主要是可以启动cygwin的ba ...
program files与program files(x86&rpar;的区别
简单来说:Program Files (x86)存放了⼀些32位的系统⽂件.它和正常的Program Files以及Windows⽂件夹⼀样,都属于系统⽂件夹,请勿随意改动. 64位Windows中提 ...

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。