运算符

学习编程肯定不能漏了运算符啊,了解不多,但先总结一点,后期不断补充啦。
、、、、、、、、、、、、、、、、、、、、、、、、、、、
运算法1:"~"

含义描述
取反将一个数按二进制取反,原本的0变成1,1变成0

举例:a=23
a=00010111
b=11101000
其实在循环的时候i >= 0可以写作 ~i可使代码更简短;因为-1取反为0
、、、、、、、、、、、、、、、、、、、、、、、、、、、
运算符2:"&"

含义描述
按位与如果两个相应的二进制位都为1,则该位的结果值为1,否则为0。

用途举例
(1)清零:
若想对一个存储单元清零(即使其全部二进制位变为0),只要对这个存储单元当前的值取反,然后使二者进行&运算,即可达到清零目的。比如a=23,b=~a:
a:00010111
b:11101000
a&b:00000000
(2)取一个数中某些指定位:
比如a=23,我想取a的二进制的后面4位数,可以找一个后4位是1其他位全是0的数b,即 b=0x0f(十六进制,转换为二进制为00001111),a&b就得到了a的后四位。
a:00010111
b:00001111
a&b:00000111
(3)保留指定位:
比如a=23,若想保留其二进制的第4和第6位(最左边为第1位),其余位置0。那么可以找一个第4和第6位是1其余位是0的数b与a进行按位与运算
a:00010111
b:00010100
a&b:00010100
、、、、、、、、、、、、、、、、、、、、、、、、、、、
运算符3:|

含义描述
按位或两个相应的二进制位中只要有一个为1,该位的结果值为1,否则为0。

用途举例:
(1)改变指定位:
常用来使一个数的某些位置变成1,而其余位不变。比如a=23,我想将其第2和第3位置变为1,可以找一个第2、3位是1其余位是0的数与a进行按位或运算。
a:00010111
b:01100000
a|b:01110111
、、、、、、、、、、、、、、、、、、、、、、、、、、、
运算符4:"^"

含义描述
异或两个相应的二进制位相同(都为1或都为0),该位的结果值为0,否则为1。

0^ 0=0,0^ 1=1 可理解为:0 ^ 任何数 = 任何数
1^ 0=1,1^ 1=0 可理解为: 1 ^ 任何数 = 任何数取反
任何数^自己,等于把自己置0
数a两次异或同一个数b(a=a^ b^ b)仍然为原值a
用途举例:
(1)指定位的翻转
按位异或可以用来使某些特定的位翻转,如对数10100001的第1位和第2位翻转,可以将数与00000110进行按位异或运算。
a=10100001
b=00000110
a^b=10100111
(2)数据交换
通过按位异或运算,可以实现两个值的交换,而不必使用临时变量。例如交换两个整数a,b的值,可通过下列语句实现:
a=10100001, b=00000110
a=a^b; //a=10100111
b=b^a; //b=10100001
a=a^b; //a=00000110
、、、、、、、、、、、、、、、、、、、、、、、、、、、
运算符5:"<<“和”>>"

含义"<<"描述
左移表示将一个数的各二进制位全部左移x位,高位舍弃,低位补0。

运算规则:按二进制形式把所有的数字向左移动相应位数,高位移出(舍弃),低位的空位补零。

含义">>"描述
右移将一个数的各二进制位右移N位,移到右端的低位被舍弃,对于无符号数,高位补0。

运算规则:按二进制形式把所有数字向右移动相应位数,低位移出(舍弃),高位的空位补符号位,即整数补0,负数补1.
a << 1 = a * (2^1) ; a << 2 = a* (2^2) ……
a >> 1 = a / (2^1) ; a >> 2 = a / (2^2)……
、、、、、、、、、、、、、、、、、、、、、、、、、、、

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值