位运算基础

位运算

计算机现在可以存储所有的数字列如整数、浮点数、字符的,运算
这里我已经了解了计算机的01

什么是位运算?

位操作是程序设计中对位模式或二进制数的一元和二元操作。在许多古老的微处理器上,位运算比加减运算略快,通常位运算比乘除法运算要快很多。在现代架构中,情况并非如此:位运算的运算速度通常与加法运算相同(仍然快于乘法运算)

列如:2*8最高效的计算方式这道面试题,答案就是位运算。

与运算(and或&)

计算机的本质

  • 两个为1,结果为1
    与

测试:

1011 0001
1101 1000
与运算
1001 0000

或运算(or或|)

  • 一个或两个为1,结果为1
    或
    测试:
1011 0001
1101 1000
或运算
1111 1001

异或运算(xor 或 ^)

不一样就是1,一样就是0
异或
测试:

1011 0001
1101 1000
异或运算
0110 0110

非运算(not 或 ~)

0就是1,1就是0,就是我们所谓的取反
测试:

1011 0001
异或运算
0100 1110

通过这些可以完成加减乘除,位运算来实现加减乘除

位运算(移动位)

左移:(shl或<<)

0000 0001  @所有二进制位全部左移若干位,高位就丢弃了,低位就补0
0000 0010

右移:(shr或>>)

0000 0001  @所有二进制位全部右移若干位,低位就丢弃了,正数低位补0,负数低位补1
0000 0000
0000 0001 十进制等于:1
0000 0010 十进制等于:2
0000 0100 十进制等于:4
0000 1000 十进制等于:8 

位运算的加减乘除

计算机只认识01
基本数学是建立在加减乘除上的(本质都是加法)。

4+5=?

# 计算机是怎么操着的!
0000 0100
+
0000 0101
=
0000 1001
# 计算机的实现原理
# 第一步:异或,如果不考虑进位,异或就可以直接出结果。
0000 0100
0000 0101
xor
0000 0001
# 第二步:与运算(判断进位,如果与运算结果为0,没有进位。)
0000 0100
0000 0101
and
0000 0100
# 第三步:将与运算的结果,左移一位, 0000 1000 进位的结果
# 第四步:异或!
0000 0001
0000 1000
xor
0000 1001
# 第五步:与运算(判断进位,如果与运算结果为0,没有进位)
0000 0001
0000 1000
and
0000 0000

# 所以最终的结果就是与运算为0的结果的上一个异或运算。
4 + 5 = 9
0000 0100 + 0000 0101 = 0000 1001

4-5=?

# 计算机怎么操作
4 + (-5)

0000 0100
-
1111 1011
=
1111 1111


异或
0000 0100
1111 1011
xor
1111 1111

与
0000 0100
1111 1011
and
0000 0000

最终结果 1111 1111 或 ff 或 -1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值