位运算的理解及用途

1、位运算的理解

位运算就是按位运算,例如:整数数1 在计算机里表示为 00000001 --单字节 00000000 00000001 -- 双字节。放在java里,若数值属于int类型则为 4字节,若数值属于byte 则为 2字节 

位运算实例: 
byte a,b=1;
// a,b 的二进制值都是,00000000 0000001
byte c=a&b;
//a,b 进行逻辑与 
// a     -> 00000000 00000001 
// b     -> 00000000 00000001
// a&b -> 00000000 00000001 (按位取与,1表示true 0 表示false,所以,只有个位两个数都是true)

同理其他的位运算也是如此理解。

2、实际应用: 

byte a= - 40; // 整数值就应该为 128(byte负数最小范围)-40(实际据最小值多少)+128(去掉了符号位,故数值位增一位,表达范围增128)=216
// 11011000
int c=a&0xff;// 这句其实等同于 int c; int tmp=(int)a; int true_8bit=0xff;c=tmp&true_8bit; 即将byte强制转换成了int后操作
// a    -> 111111111 11111111 11111111 11011000 由于是负数,转为int 除了扩充空间外,还保留符号
// 0xff -> 000000000 00000000 00000000 11111111 (0xff 的二进制值)
// c    -> 000000000 00000000 00000000 11011000 =216

这样运算后我们发现,这次运算其实起到了去掉前3个字节(由于转int 而扩展出来的本来不应存在的符号位)。测试一下可以发现c的值就是216

这样就完成了 byte 向int 型数据的转换。在使用java进行网络开发时,我们往往直接得到的就是byte,此时经常会出现转换成int 后进行判断等场景。

也有少数设备使用位进行状态标识。如:int k= 4 = 00000100,则表示第三个字段是真,事先规定好使用第三位来表示“第三种情况”。则判断是否为“第三种情况”的时候可直接 使用 int m= k & 4 直接判断m是否为0 即可得出是否包含了“第三种情况”。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值