【数据结构与算法】Java“位运算“知识点

1.java整数类型总结

数据类型 范围(^ 代表次方) 字节数
byte 类型 -128(-2 ^ 7) ~ 127(2 ^ 7 - 1)1字节,8位
short 类型  -32768(-2 ^ 15)~ 32767(2 ^ 15 - 1) 2字节,16位
int 类型 -2,147,483,648(-2 ^ 31)~ 2,147,483,647(2 ^ 31 - 1)4字节,32位
long 类型-2 ^ 63 ~ 2 ^ 63 -1 (数值太长没必要记了...)    8字节,64位

2.二进制转换

转换方式语言函数结果
十进制转二进制JavaInteger.toBinaryString(100)1100100
二进制转十进制JavaInteger.valueOf("1100100",2)100

注意:Java中的二进制是存在符号位的。我们以-10举例:

Integer.toBinaryString(-10) -> "11111111111111111111111111110110"

负数转换成二进制分为3步:

1、首先将负数转换为对应的原码

-3的原码为(也就是+3转换成二进制后的字符串):

0000 0000 0000 0000 0000 0000 0000 0011
2、再将原码的每一位做取反操作得到反码。 取反操作:0变为1 1变为0; 取反后的结果即为:

1111 1111 1111 1111 1111 1111 1111 1100
3、将反码+1得到补码

1111 1111 1111 1111 1111 1111 1111 1101
 

 3.位运算(& | ^)

与 ( & )0 & 0 = 01 & 0 = 00 & 1 = 01 & 1 = 1
或( | )0 | 0 = 01 | 0 = 10 | 1 = 11 | 1 = 1
异或( ^ )0 ^ 0 = 01 ^ 0 = 10 ^ 1 = 11 ^ 1 = 0

与、或 操作符合日常逻辑,异或操作大家只要记住,相同为0 ,不同为1即可。

PS: Java 在遇到与或是经常会顺带问问短路与 ( && ) 短路或( || )的区别,即遇到前半部分符合条件立即终止判断。

4.位移操作

位运算分 左位移、右位移,符号对应<< 和 >>,简单来说就是将数字 m 向左、右移动n位。

如果是左移,最左边的n位将被丢弃,同时使用n个0进行补充至字符串末尾。

如果是右移,字符串末尾的n位被丢弃,但处理左边位时默认补0?No,针对Java等有符号位的语言,需要补充符号位,即正数补0,负数补1!

5.知识点

知识点一:x/2 等价于 x>>1

知识点二:x%2 等价于 x&1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小树ぅ

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

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

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

打赏作者

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

抵扣说明:

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

余额充值