位运算符

Java中除了常见的运算符如:+、-、*、/、%、++、–等,还有一类不常见的位运算符。位运算符就是^、&、|、~,当这四个运算符两边的值为bool类型时那他们就是逻辑运算符,当这四个运算符两边的值为整数时那他们就是位运算符。位运算符顾名思义是对二进制位进行计算,所以首先要把运算符两边的整数转换为二进制的形式然后进行计算,下面介绍位运算符的计算方式。

^位运算符

当位运算符^两边的二进制整数的对应位相同时,结果位为0,对应位不同时,结果位为1。

public class BitHelper
{
    public void TestMethod()
    {
        //  5:00000101
        // 12:00001100
        //   :00001001,结果为8+1=9
        Console.WriteLine("5^12={0}",5^12);//9
    }
}

&运算符

当位运算符&两边的二进制整数的对应位都为1时,结果位为1,其他情况下,结果位为0。

public class BitHelper
{
    public void TestMethod()
    {
        // 5:00000101
        //12:00001100
        //  :00000100,结果为4
        Console.WriteLine("5&12={0}",5&12);//4
    }
}

|运算符

当位运算符&两边的二进制整数的对应位有一个为1时,结果位为1,其他情况下(对应位都是0),结果位为0。

public class BitHelper
{
    public void TestMethod()
    {
        // 5:00000101
        //12:00001100
        //  :00001101,结果为8+4+1=13
        Console.WriteLine("5|12={0}",5|12);//13
    }
}

~运算符

~运算符是按位取反运算符,求反不是在整数前加一个负号,而是对整数的二进制码求反,得到的反码就是对原整数按位取反的结果。

public class BitHelper
{
    public void TestMethod()
    {
        // 5:00000101
        //~5:11111010,~5的二进制码的最高位为1说明~5是一个负数
        //按照负数存储过程反向得到该负数:先减1得到11111001->求反得到00000110->值为6->加符号为-6
        Console.WriteLine("~5={0}",~5);//-6
    }
}

Java中负数的存储原理

1byte(1字节)等于8bit(8位),1byte可以存储256个数字(2的8次方),Java中byte的范围是-128~127。
Java中规定在计算机中如果一个二进制数据的最高位(最左边的位)是1,那么该数据肯定是一个负数;如果一个二进制位数据的最高位是0,那么该数据肯定是一个正数;负数在计算机中存储的是补码。byte是8位如果存整数,最高位肯定是0,后7位都是1时存储的正数最大,二进制数01111111=127,因此byte的范围是-128~127。
负数的存储过程:
-10————–>11110110
1、先取负数的绝对值,求出该绝对值的二进制形式(原码)00001010
2、原码取反得到反码11110101
3、反码加1得到补码11110110
负数的解析过程:
11110110————–>-10
1、补码减1得到反码11110101
2、反码取反得到原码00001010
3、根据原码求得整数10,再加符号得到原数据-10

注意:
Java中byte的存储范围是-128~127,C#中byte的范围是0-255。
C#和Java中位运算符^、&、|、~的运算规则都是相同的。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

changuncle

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值