java中的,>>,<<位运算
目录
二进制
>>,<<
&
二进制
计算机内部使用二进制计数
二进制:在数学和数字电路中指以2为基数的记数系统,以2为基数代表系统是二进位制的,这一系统中,通常用两个不同的符号0(代表零)和1(代表一)来表示,数字电子电路中,逻辑门的实现直接应用了二进制。
>>,<<
以Java语言中Int数据类型举例,int在java中表示为32位的二进制数。
比如说,int number = 7 ;
在计算机中,number并不是十进制的数字7,而是以32进制数保存,如下所示:
number = 00000000000000000000000000000111
位运算符:
- << 表示对二进制数向左移动
- >> 表示对二进制数向右移动
栗子:
for(int i=1;i<=10;i++){int a=i<<1;System.out.println(i+"\t 左移后:"+a);}
1 左移后:2
2 左移后:4
3 左移后:6
4 左移后:8
5 左移后:10
6 左移后:12
7 左移后:14
8 左移后:16
9 左移后:18
10 左移后:20
可以看到,左移一位相当于*2,同理可以推出右移一位相当于/2;
在运算时,使用位运算的效率就比直接使用取模运算效率要高,使用逻辑操作能够减少取模的时间开销。
参考文章:Java算法之入门--位运算_java 位运算_ManoCode的博客-CSDN博客
&
同理,&也是直接对二进制数进行比较,两位全为1,结果为1,否则为0。
11 & 14 = 1011转换为二进制为:0000 0000 0000 1011
14转换为二进制为:0000 0000 0000 1110结果为:0000 0000 0000 1010 = 101 & 1 = 1
1 & 0 = 0
0 & 1 = 0
0 & 0 = 0
总结:好久没有总结了,最近在看java源码和算法,将java源码看完之后就会开新语言了,而且,我也马上就可以回家了,在学校呆了这么久,虽然说有人陪着,但还是家里面更香一点,还可以在家里尽情的发疯,不像在学校,只能在一个人面前发疯。