python左移位运算_python移位操作困惑
1.在使用python进行移位操作的时候发现python进行移位操作后的数值与其他语言不一样(java,php,javascript),然后google了下 看到了这篇帖子http://www.cnblogs.com/zhengyun_ustc/archive/2009/10/14/shifting.html,然后又看了看python移位操作与php语言移位操作的原理,python是被移位数乘以2的移位数目的次方
例,
1000<<1 = 1000*pow(2,1) = 2000
2,php进行<
<
语法格式:
需要移位的数字 << 移位的次数
例如: 3 << 2,则是将数字3左移2位
计算过程:
3 << 2
首先把3转换为二进制数字0000 0000 0000 0000 0000 0000 0000 0011,然后把该数字高位(左侧)的两个零移出,其他的数字都朝左平移2位,最后在低位(右侧)的两个空位补零。则得到的最终结果是0000 0000 0000 0000 0000 0000 0000 1100,则转换为十进制是12.数学意义:
在数字没有溢出的前提下,对于正数和负数,左移一位都相当于乘以2的1次方,左移n位就相当于乘以2的n次方。
3.为什么python进行<
例,
python1000<<25 = 33554432000L
php1000 << 25 = -805306368
为什么会有不同的结果,
原来是因为python是int类型是无精度类型,不会发生溢出而进行截取的情况,php在移位运算时,byte、short和char类型移位后的结果会变成int类型,对于byte、short、char和int进行移位时,规定实际移 动的次数是移动次数和32的余数,也就是移位33次和移位1次得到的结果相同。移动long型的数值时,规定实际移动的次数是移动次数和64的余数,也就 是移动66次和移动2次得到的结果相同。
4,让python实现和php一样移位运算结果
一,十进制转二进制然后进行移位操作
defshifting(string_num):
base= [str(x) for x in range(10)] + [ chr(x) for x in range(ord('A'),ord('A')+6)]
num=int(string_num)
mid=[]whileTrue:if num == 0: breaknum,rem= divmod(num, 2)
mid.append(base[rem])
temp= ''.join([str(x) for x in mid[::-1]])
s1= temp.zfill(32)
s2= s1[5:]+"0"*5s3=bin2dec(s2)return s3
二,二进制转十进制
defbin2dec(string_num):return str(int(string_num, 2))
python左移位运算_python移位操作困惑相关推荐
- python左移位运算_python移位运算符
1,二进制方式 >>> bin( 1)'0b1' >>> bin( 10)'0b1010' >>> a =0b10>>>a2 & ...
- python左移位运算_python 移位运算符只能用于整型吗
匿名用户 1级 2016-12-29 回答 什么是操作符? 简单的回答可以使用表达式4 + 5等于9,在这里4和5被称为操作数,+被称为操符. Python语言支持操作者有以下几种类型. 算术运算符 ...
- python字符位运算_python 字符串位运算-女性时尚流行美容健康娱乐mv-ida网
女性时尚流行美容健康娱乐mv-ida网 mvida时尚娱乐网 首页 美容 护肤 化妆技巧 发型 服饰 健康 情感 美体 美食 娱乐 明星八卦 首页 > 高级搜索 [ python ] pyth ...
- python取模运算_python取模操作
广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 本文最先发布在:https:www.itcoder.techpostspytho ...
- python左移右移位运算_Python这些位运算的妙用,绝对让你大开眼界
位运算的性能大家想必是清楚的,效率绝对高.相信爱好源码的同学,在学习阅读源码的过程中会发现不少源码使用了位运算.但是为啥在实际编程过程中应用少呢?想必最大的原因,是较为难懂.不过,在面试的过程中,在手 ...
- python整数逆位运算_Python这些位运算的妙用,绝对让你大开眼界
位运算的性能大家想必是清楚的,效率绝对高.相信爱好源码的同学,在学习阅读源码的过程中会发现不少源码使用了位运算.但是为啥在实际编程过程中应用少呢?想必最大的原因,是较为难懂.不过,在面试的过程中,在手 ...
- python 整数逆位运算_python训练营:注释、运算符、数据类型与位运算
天学习的内容整理成脑图如下,其中带☆的是需要重点掌握的模糊知识点,需要加强训练和记忆. 二.具体学习内容 2.1 注释 2.1.1 多行注释 2.1.2 长字符串注释 2.2 运算符 2.2.1 算术 ...
- python与或非位运算_python位运算
什么是位运算 位运算就是把数字当成二进制来进行计算,位运算有六种:&(与), |(或), ^(异或), ~(非), <>(右移) &(与) &运算规则:两个位都为1 ...
- python 整数逆位运算_Python 进制转换、位运算
一.进制转换 编程用十进制,十进制转换为二进制.八进制.十六进制 In [135]: bin(23) Out[135]: '0b10111' In [136]: oct(23) Out[136]: ' ...
最新文章
- Linux下Tomcat的启动、关闭
- 配置EIGRP默认路由
- Python基础教程:赋值、深拷贝与浅拷贝(内存地址)
- mysql denide_MYSQL 出现Error1045 access denied 的解决方法
- 想当老板的人,三点特征很重要(转)
- 从学校到职场的路有多远
- sp_getapplock_sp_getapplock和sp_releaseapplock存储过程概述
- cmd mysql出现乱码怎么解决方法_cmd如何解决mysql乱码
- 4.C++深入理解 面向对象部分3
- c traps and pitfalls reading notes(2)
- matlab画圆函数
- postman前置脚本密码MD5加密以及转大写
- 【现代密码学】大作业-RSA大礼包
- 说白了那就是在一个池里放些亲亲鱼
- Python 如何将视频文件的语音转换为文字,良心之作!
- Python 基于modbus tcp 协议 实现与plc通信
- 在Excel中使用翻译公式 (有道API)
- java 三点_[Java教程]三点运算符使用方法
- 时间机器能成为现实么?
- 将自己的网站上传至服务器并通过域名进行访问