位运算学习笔记(bit operation)

导读:位运算,字如其名,学着学着就跑到计算机组成原理中去了,真是噩梦!如果是普通的加减乘除还好,直接进行位运算,小懂也做不了啊!没办法,这部分比较重要,还是学吧!

位运算

进制
进制转换和原、反(弥补减法)、补(弥补两个0的表示)我不想啰嗦了……

位运算
计算机采用的是二进制,二进制包括两个数码:0,1。在计算机的底层,一切运算都是基于位运算实现的。

位运算共有 6 种,分别是:与、或、异或、取反、左移和右移,其中左移和右移统称移位运算,移位运算又分为算术移位和逻辑移位。上述位运算中,只有取反是一元运算,其余的都是二元运算。

与、或、异或和取反:

  • 与运算的符号是 &,运算规则是:对于每个二进制位,当两个数对应的位都为 1 时,结果才为 1,否则结果为 0
  • 或运算的符号是 ∣,运算规则是:对于每个二进制位,当两个数对应的位都为 0 时,结果才为 0,否则结果为 1。
  • 异或运算的符号是 ⊕(在代码中用 ∧ 表示异或),运算规则是:对于每个二进制位,当两个数对应的位相同时,结果为 0,否则结果为 1。
  • 取反运算的符号是 ∼,运算规则是:对一个数的每个二进制位进行取反操作,0 变成 1,1 变成 0。

移位运算:移位运算按照移位方向分类可以分成左移和右移,按照是否带符号分类可以分成算术移位和逻辑移位

  • 左移运算的符号是 <<。左移运算时,将全部二进制位向左移动若干位,高位丢弃,低位补 0。对于左移运算,算术移位和逻辑移位是相同的
  • 右移运算的符号是 >>。右移运算时,将全部二进制位向右移动若干位,低位丢弃,高位的补位由算术移位或逻辑移位决定(正数都是逻辑右移):
    算术右移时,高位补最高位;逻辑右移时,高位补 0

训练经验总结

要想获取一个位数的值(0 或1),做法是把她和1按位与,当这个位也为1的时候输出1,当这个为0的时候输出0(颠倒二进制位

当进行加法的时候,进位数可以看作是按位与左移一个位置(向高位移),没有进位的数可以看作是异或运算的值(两整数之和),当求到没有进位的时候说明可以直接计算得到结果

  • 进位部分:只有当两个数都是 1 时,才会发生进位,进位部分的值是 10,因此进位部分可以看成是两个数的按位与的结果左移一位
  • 非进位部分:当两个数相同时非进位部分的值是 0,当两个数不同时非进位部分的值是 1,因此非进位部分可以看成是两个数的按位异或的结果
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值