📖 开场白
亲爱的读者,大家好!我是一名正在学习编程的高校生。在这个博客里,我将和大家一起探讨编程技巧、分享实用工具,并交流学习心得。希望通过我的博客,你能学到有用的知识,提高自己的技能,成为一名优秀的程序员。如果你有任何疑问或建议,请随时在评论区留言,让我们一起成长进步!现在,让我们开始这场知识之旅吧!
📑本人主页:三亿老奶奶心中的梦
🔖收入专栏:JavaSE
文章目录
- 📖 开场白
- 📖 前言
- 📖 1. 移位运算符
- 🔖1.1 左移(<<)
- 🔖1.2 右移(>>)
- 🔖1.3 无符号右移(>>>)
- 📖 总结
- 📖 结束语
📖 前言
本章节将会讲解,什么是移位运算符,如何去使用移位运算符!如有错误,还请指出,非常感谢!!!
📖 1. 移位运算符
移位运算符,在Java中有3种,分别是:
- 左移(<<)
- 右移(>>)
- 无符号右移(>>>)
这些移位运算符都是双目运算,并且都是对二进制进行移位!!!
🔖1.1 左移(<<)
左移(<<),是对一个数的二进制位进行移位,操作的就是这个数的二进制位,那么它的运算规则是:左边丢弃,右边补0
图表 1.1
对正数移位:
public class TestDemo {
public static void main(String[] args) {
int a = 6;
int b = a << 1;
System.out.println("a << 1 = " + b);
}
运行结果:
分析:
- 左移运算符的规则是左边丢弃,右边补0,并且移位的是二进制位,我们先写出 int a = 6 的二进制位
- 随后进行 a << 1,就得到了 12,对于一些数左移可以说有着乘2的效果,但是并不是所有的数都有着乘2效果
- 当左移n位,右边就补n个0,例如:左边移1位,右边补1个0;左移2位,右边补2个0
对负数移位:
public class TestDemo {
public static void main(String[] args) {
int a = -10;
int b = a << 1;
System.out.println("a << 1 = " + b);
}
运行结果:
分析:
- 首先,写出这个数的二进制位,如果是负数,原反补码不同,如果是正数,它的原反补码相同
- 进行 a << 1 ,得到下图,得到的补码需要进行转换为原码
🔖1.2 右移(>>)
右移(>>),同样的是对一个数的二进制位进行移位,那么它的运算规则是:右边丢弃,左边补原符号位(原符号位是左边第一位数,其他位数为数值位)
图标1.2
对正数进行移位:
public class TestDemo {
public static void main(String[] args) {
int a = 8;
int b = a >> 1;
System.out.println("a >> 1 = " + b);
}
运行结果:
分析:
- 对于右移,同样需要写出被右移数的二进制位
- 进行 a >> 1 ,最终得到,也就说当右移n位,右边的值就丢弃n位,而左边的值看原符号位来补n位(原符号位是左边第一位数,其他位数为数值位)
对负数进行移位:
public class TestDemo {
public static void main(String[] args) {
int a = -4;
int b = a >> 1;
System.out.println("a >> 1 = " + b);
}
运行结果:
分析:
- 对于右移负数,我们需要写出它的原码,反码,补码
- 随后对补码进行 a >> 1 ,右边的值丢弃n位,左边就补齐n位原符号的值
🔖1.3 无符号右移(>>>)
无符号右移(>>>),同样的是对一个数的二进制位,进行移位,那么它的运算规则是:右边丢弃,左边补0
图标1.3
无符号右移正数:
public class TestDemo {
public static void main(String[] args) {
int a = 4;
int b = a >>> 1;
System.out.println("a >>> 1 = " + b);
}
运行结果:
分析:
- 首先,写出这个被无符号右移数的二进制位
- 进行 a >>> 1,右边丢弃n位,左边补n个0
对负数进行 >>>
public class TestDemo {
public static void main(String[] args) {
int a = -4;
int b = a >>> 1;
System.out.println("a >>> 1 = " + b);
}
运行结果:
分析:
- 首先,写出该数的二进制位,随后对补码进行 a >>> 1,最终得到一个很大的数
📖 总结
- 移位不要移动小数位!!!
- 移位不要移动太大的数
📖 结束语
非常感谢您花时间阅读我的博客,希望我的分享能为您带来收获。如果您对本文有任何想法或疑问,欢迎在评论区留言交流。如果您喜欢我的博客,请继续关注,我会定期更新更多精彩内容。最后,别忘了行动起来的力量,让我们一起实践这些方法,见证自己的成长和进步!