位运算符和移位运算符

位运算符

主要应用在二进制中运算中。

与(&)运算符

示例:

  • 0&0=0   必须全部位1则为1,否则为0
  • 0&1=0
  • 1&0=0
  • 1&1=1  全部为1,结果为1

非(~)运算符

  • 非运算符即取反运算,1变0,0变1。

~1110010

=  0001101

或(|)运算符

示例:

  • 0&0=0  两个数有任意一个为1则结果为1,否则为0
  • 0&1=1
  • 1&0=1
  • 1&1=1

异或(^)运算符

规则:同为假,异为真

示例:

  • 0^0=0
  • 1^0=1
  • 0^1=1
  • 1^1=0

移位运算符

左移运算符(<<)

value << num  ,  使指定值value所有的位都左移规定的次数num

运算规则:

  • 丢弃最高位,0补最低位
  • 若移动的位数超过了该类型的最大位数,那么编译器对移动的位数取模,即int型移动了33位,只移动了33%32=1位
  • 当移动的运算数是byte和short类型时,将自动把这些类型扩大位int
  • 当移进高阶位(符号位)31位或63位,那么该值将变为负数

数学意义:在数字没有溢出的情况下,对于正数和负数,左移一位相当于乘以2的1次方,左移n位相当于乘以2的n次方

示例:4 << 2= 4 * 2 * 2 = 16 , 5 << 3 = 5 * 2 * 2 * 2 = 40

右移运算符(>>)

value >> num  ,  使指定值value所有的位都右移指定的次数num

运算规则:

  • 最低位移除,高位的空位补符号位,即正数补0,负数补1
  • 当移动的运算数是byte和short类型时,将自动把这些类型扩大位int

数学意义:右移一位相当于除2,右移n位相当于除以2的n次方

示例:4 >> 2 = 1 , 8 >> 2 = 2

无符号右移(>>>)

value >>> num  忽略符号位的拓展,0补最高位

无符号右移的规则和右移运算符运算一样,只是填充时不管左边的数字是正或者负都是用0来填充的,针对负数计算有意义,对正数无意义

无符号右移运算符 >>> 只是对32位和64位的值有意义

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值