美文网首页
Java - 位运算

Java - 位运算

作者: 沐兮_d64c | 来源:发表于2019-07-06 20:25 被阅读0次

1,Java位运算

1)二进制数制(java不提供代码直接写二进制数,可以使用0x十六进制表示无符号的正整数)
计算机数据最终以二进制形式存在。
二进制数使用补码表示,最高位为符号位,正数符号位0,负数符号位1。
正数补码:二进制表示本身。如7 -> 0...0111
负数补码:绝对值补码,取反然后+1。如 -7 -> (0...0111 -> 1...1000 -> 1...1001)
2)逻辑运算符
~ 按位取反。~ 0...0111 -> 1...1000。~n = -n - 1
& 按位与(同1为1,不同为0。) 0...0111 & 0...0101 -> 0...0101
| 按位或(存在1则为1,否则为0。) 0...0101 | 0...010 -> 0...0111
^ 按位异或(相同为0,不同为1。) 0...0101 ^ 0...0010 -> 0...0111
3)移位运算符
<< 有符号左移,相当于 *2,如计算n*(2^m) = n << m
>> 有符号右移,相当于 /2
>>> 无符号右移,最高位补0

2,位运算的应用

1)异或^ 交换变量、反转指定位
交换变量:原理变量a异或b两次(针对所有的1异或2次)等于本身。 a ^ b ^ b = a
反转指定位:0异或任何数=本身; 1异或任何数=取反;任何数异或自己=把自己置0。
a = a ^ b
b = b ^ a
a = a ^ b
2)位与& 判断奇偶
(a & 1) == 1 表示最后一位为1,代表奇数
(a & 1) == 0 表示最后一位为0,代表偶数
3)位与& 清零、取某几位
使用>>移位操作、& 0xff来完成
4)位溢出与截断
两个int数相加可能导致溢出。如Integer.MAX_VALUE + Integer.MAX_VALUE。
求两个数的mid,使用 min + (max - min) / 2,不适用 (max+min)/2。
int型强制转换成byte -> 只取低8位。
5)位运算优化
取余:a % 2 => a & 1a % (2^n) => a & (2^n) - 1
乘除:<<左移、>>右移
相反数:-n = ~n + 1

3,进制转换

1)除k取余法,进制转换。十进制转16进制
decimal % 16 可以优化为 decimal & 15
decimal / 16 可以优化为 decimal >>> 4

image.png
2)Integer.toBinaryString分析只能处理无符号整数
image.png
image.png

相关文章

  • java位运算

    Java 位运算(移位、位与、或、异或、非) Java提供的位运算符有:左移( << )、右移( >> ) 、无符...

  • python基础(四)----运算符

    一.算术运算符(基本同Java) 二.比较运算符(基本同Java) 三.赋值运算符(基本同Java) 四.位运算符...

  • JAVA位运算等运算符总结

    JAVA位运算等运算符总结 一、概述 运算符是一种“功能”符号,用以通知 Java 进行相关的运算。 Java 语...

  • java 位运算

    一、非 "~" 如果位数未0,则结果为1; 如果位数为1,则结果为0。 二、或"|" 两个只要有一个为1,结果为1...

  • Java 位运算

    首先,在Java中,运算符有以下这些: 按位与 & 按位或 | 按位异或 ^ 按位非 ~ 左移 << 右移 >> ...

  • Java位运算

    java各类转化字节数组 <----->二进制数字、十进制、16进制、字符串 二进制(Binary)<------...

  • java位运算

    java提供的位运算符 一元操作符:位非:~。 二元操作符:左移:<<; 右移: >>; 无符号右移: >>>(左...

  • Java 位运算

    本文主要介绍 Java 提供的位运算符:左移( << )、右移( >> ) 、无符号右移( >>> ) 、位与( ...

  • Java位运算

    Java常用的位运算: 带符号右移 >> 对于正数, 带符号右移 >> 会把所有的位右移,并在最前面补0对于负数,...

  • Java位运算

    判断int型变量a是奇数还是偶数 a&1 = 0 偶数 a&1 = 1 奇数 求平均值,比如有两个int类型变量x...

网友评论

      本文标题:Java - 位运算

      本文链接:https://www.haomeiwen.com/subject/rqayhctx.html