雅客网站建设,图册制作,如何查询网站备案号,站长统计1.在使用python进行移位操作的时候发现python进行移位操作后的数值与其他语言不一样#xff08;java,php,javascript#xff09;#xff0c;然后google了下 看到了这篇帖子http://www.cnblogs.com/zhengyun_ustc/archive/2009/10/14/shifting.html#xff0c;然后又看了看…1.在使用python进行移位操作的时候发现python进行移位操作后的数值与其他语言不一样java,php,javascript然后google了下 看到了这篇帖子http://www.cnblogs.com/zhengyun_ustc/archive/2009/10/14/shifting.html然后又看了看python移位操作与php语言移位操作的原理python是被移位数乘以2的移位数目的次方 例 10001 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进行操作会有与其他语言不同的情况 例 python100025 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一样移位运算结果 一十进制转二进制然后进行移位操作 def shifting(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 []while True: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 二二进制转十进制 def bin2dec(string_num):return str(int(string_num, 2)) 转载于:https://www.cnblogs.com/jeesezhang/p/3708517.html