python笔记_位运算

本文详细介绍了二进制中正负数的原码、反码和补码表示方法,以及计算机如何使用补码进行运算。同时讲解了位运算符如按位取反、按位与、按位异或和按位或,以及左移和右移的规则和实例。
摘要由CSDN通过智能技术生成

A,原码反码补码

1,二进制

二进制的最高位是符号位,0为正,1为负

3 => 0000 0011

-3 => 1000 0011


2,正数

正数的原码,反码,补码都一样(三码合一)

3 => 0000 0011(原码

        0000 0011(反码

        0000 0011(补码


3,负数 

负数的反码:原码符号位不变,其他取反(0变1,1变0

-3 =>

原码1000 0011

反码1111 1100

负数的补码:反码加一

负数的反码:补码减一

-3 =>

反码1111 1100

补码1111 1101


4,0

0的反码补码都是0 


5,计算机运算

计算机运算时,以补码的方式运算,查看运算结果时,需要看原码

1=>补码0000 0001

-3=>补码1111 1101

1 - 3 =>补码0000 0100

原码0000 0100

——>

4

1=>补码0000 0001

-3=>补码1111 1101

1 - 3 =>补码1111 1110

反码1111 1101

原码1000 0010

——>

-2


B,位运算

位运算符描述
+x,-x,~x正,负,按位非NOT

>>

<<

右移

左移

&按位与
^按位异或
|按位或

        

1,~按位取反

规则:对数据的每个二进制取反,1为0,0为1

~2

原码:0000 0010

补码:0000 0010

2 按位取反

补码:1111 1101

原码:1000 0011

——>

结果:-3

~-2 

原码:1000 0010

补码:1111 1110

-2 按位取反

补码:0000 0001

原码:0000 0001

——>

结果:1

2,&按位与

规则:参与运算的两个值,如果两个补码对应的位置都为一,则该位结果为一,否则为0

2 & 3

2补码:0000 0010

3补码:0000 0011

2 & 3补码:0000 0010 补码=原码

——>2

3,^按位异或

规则:如果两个补码对应的位置相异,则该位结果为一,否则为0

2^-3

2补码:0000 0010

-3补码:1111 1101

2 ^ -3补码:1111 1111

2 ^ -3原码:1000 0001

——>-1

4,按位或

规则:如果两个补码对应的位置有一个为一,则该位结果为一,否则为0

2|3

2补码:0000 0010

3补码:0000 0011

2|3补码:0000 0011

——>3

5,<<左移

规则:二进位全部左移n位,n是<<右边的数,且符号位不变,高位丢弃,低位补0

5<<1

5补码:0000 0101

5<<1补码:0000 1010 左移一位等于*2

——>10

6,>>右移

规则:二进位全部右移n位,n是<<右边的数,且符号位不变,低位溢出,用符号位补溢出的高位

5>>1

5补码:0000 0101

5>>1补码:0000 0010

——>2


C,练习

1,

定义

a=1>>2

b=-1>>2

c=1<<2

d=-1<<2

输出

print(a)

print(b)

print(c)

print(d)

——>

0

-1

4

-4

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值