python 整数逆位运算_整数及其位运算

整数及其位运算

整数具有无限精度。有四种整数表示法:十六进制整数(0x 或 0X 开头),十进制整数,八进制整数(0o 或 0O 开头)和二进制整数(0b 或 0B 开头)。

# 十六进制

0x10

16

# 十进制

10

10

# 八进制

0O10

8

# 二进制

0b10

2

数字之间或基数说明符(例如 0b)后,可以放一个下划线:

123_456_789

123456789

0b_1010

10

十进制整数不可以 0 开头:

012

File "", line 1

012

^

SyntaxError: leading zeros in decimal integer literals are not permitted; use an 0o prefix for octal integers

整数类型按位运算

按位运算只对整数有意义。以优先级升序排序的按位运算:

- x | y x 和 y 按位 或 运算

- x ^ y x 和 y 按位 异或 运算

- x & y x 和 y 按位 与 运算

- x << n x 左移 n 位,相当于 x*2**n

- x >> n x 右移 n 位,相当于 x//(2**n)

- ~x x 逐位取反

下面以八位机为例,x 取 6,y 取 8,n 取 2:

6 和 8 在内存中的储存分别为 00000110,00001000。

按位 或 运算,规则如下:

0|0, 1|0, 1|1

(0, 1, 1)

6|8 逐位运算后结果为 00001110,十进制就是 14:

6|8, 0b00001110

(14, 14)

同理可按下列计算规则,计算出 6^8, 6&8:

0^0, 0^1, 1^1

(0, 1, 0)

0&0, 0&1, 1&1

(0, 0, 1)

6^8, 6&8

(14, 0)

6 左移 2 位结果为 00011000,十进制就是 24,相当于 6*2**2:

6<<2, 0b00011000, 6*2**2

(24, 24, 24)

同理可计算出 6>>2,结果为 1:

6>>2, 6//(2**2)

(1, 1)

6 逐位取反为 11111001,因为我们是以八位机来举例的,八位机中 11111001 表示 -7,这是个天才设计,正负整数计算可以利用一种电路即可完成,有兴趣的可以查资料了解详情。

~6

-7

例如 8 + (-7) 如此计算:

00001000

+ 11111001

=100000001

因为是八位机,结果有 9 位,所以第一个 1 溢出,结果就是 1。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值