码迷,mamicode.com
首页 > 编程语言 > 详细

Python 进制转换、位运算

时间:2019-01-19 16:23:59      阅读:197      评论:0      收藏:0      [点我收藏+]

标签:说明   ima   image   十六   ref   ==   height   size   注意事项   

一、进制转换

技术分享图片

 编程用十进制,十进制转换为二进制、八进制、十六进制

In [135]: bin(23)
Out[135]: ‘0b10111‘
 
In [136]: oct(23)
Out[136]: ‘0o27‘
 
In [137]: hex(23)
Out[137]: ‘0x17‘

也可以直接反向获取十进制

In [146]: 0b10111
Out[146]: 23
 
In [147]: 0o27
Out[147]: 23
 
In [148]: 0x17
Out[148]: 23

也可以用int函数来转换

In [149]: int(‘0b10111‘, 2)
Out[149]: 23
 
In [150]: int(‘0o27‘, 8)
Out[150]: 23
 
In [151]: int(‘0x17‘, 16)
Out[151]: 23

 

二、位运算

  • & 按位与
  • | 按位或
  • ^ 按位异或
  • ~ 按位取反
  • << 按位左移
  • >> 按位右移      
    •   用途: 直接操作二进制,省内存,效率高

1)<<按位左移

各二进位全部左移n位,高位丢弃,低位补0

技术分享图片

x << n 左移 x 的所有二进制位向左移动n位,移出位删掉,移进的位补零

【注意事项】

  • a. 左移1位相当于乘以2
  • 用途:快速计算一个数乘以2的n次方 (8<<3 等同于8*2^3)
  • b.左移可能会改变一个数的正负性

2)>>右移

各二进位全部右移n位,保持符号位不变
x >> n, x的所有二进制位向右移动n位,移出的位删掉,移进的位补符号位, 右移不会改变一个数的符号

【注意事项】

  • 右移1位相当于除以2
  • x 右移 n 位就相当于除以2的n次方
  • 用途: 快速计算一个数除以2的n次方 (8>>3 等同于8/2^3)

3)& 按位与

全1才1否则0 :只有对应的两个二进位均为1时,结果位才为1,否则为0

用6和3这个例子。不要用9 和13的例子

4) | 按位或

有1就1 只要对应的二个二进位有一个为1时,结果位就为1,否则为0

5) ^ 按位异或

不同为1 当对应的二进位相异(不相同)时,结果为1,否则为0

6) ~ 取反

~9 = -10

【为什么9取反变成了-10的说明】:

9的原码 ==> 0000 1001 因为正数的原码=反码=补码,所以在 真正存储的时候就是0000 1001

接下来进行对9的补码进行取反操作

进行取反==> 1111 0110 这就是对9 进行了取反之后的补码

既然已经知道了补码,那么接下来只要转换为 咱们人能识别的码型就可以,因此按照规则 ,把这个1111 0110 这个补码 转换为原码即可

符号位不变,其它位取反==> 1000 1001

 

参考文献:

【1】python中的进制、位运算

Python 进制转换、位运算

标签:说明   ima   image   十六   ref   ==   height   size   注意事项   

原文地址:https://www.cnblogs.com/nxf-rabbit75/p/10291792.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!