Java中的位运算及其常见的应用

文章介绍了计算机中数据以二进制补码形式存储和运算,详细讲解了原码、反码和补码的概念,并列举了正负数的示例。接着,讨论了Java中的位运算符,如按位与、按位或、按位异或等。此外,文章还阐述了位运算在取模、判断奇偶性、交换变量值以及实现加法运算中的应用。
摘要由CSDN通过智能技术生成

1、位运算

1.1 原码、反码、补码
  • 计算机中所有数据的存储和运算都是以二进制补码的形式进行的。
  • a —> 97,A —> 65,‘0’ —> 48
    ASCII码表
  • 举例:5和-5,Java中int类型的数占4个字节,由于1字节(Byte)=8位(bit),所以int类型的数共占32位。其中第1位是符号位,该位为0表示正数,为1表示负数。其余31位是数值位。
    • 原码:
      5: 0000 0000 0000 0000 0000 0000 0000 0101
      -5:1000 0000 0000 0000 0000 0000 0000 0101
    • 反码:
      5: 0000 0000 0000 0000 0000 0000 0000 0101
      -5:1111 1111 1111 1111 1111 1111 1111 1010
    • 补码:
      5: 0000 0000 0000 0000 0000 0000 0000 0101
      -5:1111 1111 1111 1111 1111 1111 1111 1011
  • 结论:
    • 正数的原码、反码、补码都是一样的。
    • 负数的原码:把正数原码的第一位(符号位)0变成1。
    • 负数的反码:把负数原码的符号位不变,数值位取反(0变成1,1变成0)。
    • 负数的补码:负数反码加上1。
    • 0: 0000 0000 0000 0000 0000 0000 0000 0000
    • -0:1000 0000 0000 0000 0000 0000 0000 0000
1.2 位运算符
  • Java中的位运算符一共有7个:
符号 含义
& 按位与,and。两个数字相同位上,同1为1,一0为0
| 按位或,or。两个数字相同位上,一1为1,同0为0
^ 按位异或,xor。两个数字相同位上,相同为0,不同为1
~ 按位取反,not。1变为0,0变为1
<< 左移,shl。a << b表示把a的二进制数左移b位,最右边空出的b位用0补充。运算结果相当于a乘以2的b次方
>> 右移,shr。a >> b表示把a的二进制数右移b位,即去掉末尾的b位,最左边的b位补上原来的符号位(正数为0,负数为1)。若a为正数,运算结果相当于a除以2的b次方
>>> 无符号右移。a >>> b表示把a的二进制数右移b位,即去掉末尾的b位,最左边的b位补上0(无论正负都补0)
int a = 5;  // 0000 0000 0000 0000 0000 0000 0000 0101
int b 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值