JAVA位运算

JAVA位操作符分为两种

1.两个二进制数比较,返回一个新的二进制数
语法:
数值 运算符 数值 ,返回基本数值类型
运算符内容
&(并)位与位比较,都是1该位才返回1,否则该位返回0
|(或)位与位比较,只有有一个是1该位就返回1,没1该位返回0
^(异或)位与位比较,相同该位返回0,不同该位返回1
例子:
十进制二进制(32位显示)结果转十进制
2000000000000000000000000000010100
1000000000000000000000000000001010
20 & 10000000000000000000000000000000000
20 | 100000000000000000000000000001111030
20 ^ 100000000000000000000000000001111030
注意:
虽然是比较,但返回的结果是数值类型,不是boolean;像 int & int 返回的是int,long & int 返回的是long

2.单个二进制数转换,返回一个新的二进制数
  • 语法:数值 运算符 移多少位,返回基本数值类型
运算符内容
~(非)把每一位的0变成1,1变成0
<<(左移)把所有位整体向左移动多少位,右边补0
>>(右移)把所有位整体向右移动多少位,左边补符号位(即最高位)
>>>(无符号右移)把所有位整体向右移动1位,左边补0
例子:
  • 左移右边补0
十进制二进制(32位显示)结果转十进制
2000000000000000000000000000010100
20 << 10000000000000000000000000010100040
-2011111111111111111111111111101100
-20 << 111111111111111111111111111011000-40

  • 右移左边补符号位(最高位),结果转为有符号的十进制整数
十进制二进制(32位显示)结果转十进制
2000000000000000000000000000010100
20 >> 10000000000000000000000000000101010
20 >> 2000000000000000000000000000001015
-2011111111111111111111111111101100
-20 >> 111111111111111111111111111110110-10
-20 >> 211111111111111111111111111111011-5

  • 无符号右移左边补0,结果直接转为十进制
十进制二进制(32位显示)结果转十进制
2000000000000000000000000000010100
20 >>> 10000000000000000000000000000101010
20 >>> 2000000000000000000000000000001015
-2011111111111111111111111111101100
-20 >>> 1011111111111111111111111111101102147483638
-20 >>> 2001111111111111111111111111110111073741819

重点解释
  • 符号位(最高位)
    符号位即数值的最高位,即左边第一位。正数的符号位为0,负数的符号位为1。其余各位用来表示数值的大小。
  • 负数的二进制
    负数的二进制即将原来的二进制数的每一位0转为1,1转为0;得到的结果+1;然后前面的每一位都补1;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值