位运算小技巧

引言: 位运算就是直接对二进制进行操作, 不管是在Java语言,还是在C语言中,或者其他语言等等都是经常会用到的,本文以Java语言来举例子,展示和分析了位运算的使用和技巧。

1 位运算

1.1 基本概念

位运算主要包括按位与(&)、按位或(|)、按位异或(^)、取反(~)、左移(<<)、右移(>>)、无符号右移(>>>)这几种,其中除了取反(~)以外,其他的都是二元运算符,即要求运算符左右两侧均有一个运算量。

概念: 位运算就是使用位运算符直接对整数在内存中的二进制位进行操作(参百度百科).
关于补码和原码: 在计算机中,整数是按原码(二进制)存的, 负数是按补码存的, 整数的补码和原码相同, 负数的补码等于原码取反后再加一
示例:

3(正数的补码和原码相同)
原码:0000 0011
补码:0000 0011
-3(负数的补码等于原码取反后再加1)
原码:0000 0011
补码:1111 1101int型的-3可以表示为0b11111111_11111111_11111111_11111101

1.2 位运算符的使用

按位与(&):
使两个数对应的比特位进行按位与操作, 对应位同时为1, 其对应位的结果才为1

0000 1111
1111 1111
--------------------
0000 111115&255 = 1111 

按位或(|):
使两个数对应的比特位进行按位或运算, 对应位只要有一个1就为1, 否则为0

0000 1111
1111 1111
---------------------
1111 111115|255 = 11111111

按位异或(^):
两个数对应比特位相同为0, 不同为1

0000 1111
1111 1111
---------------------
1111 000015^255 = 1111 0000;

取反(~):
取反运算是个一元运算符, 对某个数进行取反运算, 使二进制的0变成1, 而1变成0

~15 ===> ~0b0000_1111 ===>1111 0000

左移(<<):
左移即将二进制数向左移n位. 某个数向左移1位相当于乘于2, 左移2位相当于乘于4, 以此类推向左移n位则这个数就乘于2^n

0000 1111<<2
--------------------------
0011 1100    <=> 15 
  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值