昨晚一罪恶,鸽了,今天一大早就补上,我可能又要长篇大论讲来龙去脉
了(有人说电影里讲过来龙去脉的大魔王都不会有好下场。。捂脸)
======================割割===================
- 1.位运算符
- 【问】位运算是啥?
- 【答】(完了完了,这一说开又要连比带画讲故事了。)说到位这个概念,就要说说我前面没有说开的变量概念,java基础02,我写的是够应付的,也就我自己看的懂了吧……(自己挖坑要自己埋。。)开始说说,其中的一个概念,变量。
1.1 变量
变量是计算机程序语言中都会有的一个内容,主要就是用来保存一个量的,比如说,今天小明(又是小明。。。)要算一百次的加法运算,他就让计算机去做,定义出了一个变量
int a;
//int 是一种数据类型
//a就是一个名称,我叫它b或者c都可以
这个变量的概念,可以和上课学过的未知数x类比,不过不一样的是,x可以代表所有的数,a却不行。因为我们看到了,a前面有一个数据类型。这个数据类型规定了两个东西,a的类型和a的大小。int类型的意思是a是一个数字,而且是整数。但是a的大小是有限制的,具体多大我忘记了,反正你如果让
a=6666666666666666666666;
多半是要出问题的,因为,计算机开辟给a的空间没有那么大。int类型的空间大小是4*8=32位。
- 【问】位是啥?
- 【答】又绕回这个问题了,电脑的底层就只有0,1两个数字,所以,每一位就是可能填0或1的位置。所以每位有2种可能性,总共就有2^32的可能性,又因为计算机规定了,32位里面,第一位是符号位,所以,负数有2^31种可能,整数有2^31种可能。这就是int类型变量能取值的范围。
当然,变量不仅仅可以放数字,也可以放字符等,具体的我就先解释到这里,以后用到了再说。
明白位是什么了吧?
算了,我觉得这很难明白,要明白具体的,还是看专业的书吧……
回来位运算,又有一堆运算符
>>,<<,>>>,&,|,^,~
这次直接来一个程序搞定这么多个问题
public class Test
/*
位运算相关 >>,<<,>>>,&,|,^,~
*/
{
public static void main(String [] args){
int b=-8;
//右移2位,答案为-2
System.out.println(b>>2);
//左移2位,答案为-32
System.out.println(b<<2);
//无符号右移2位,答案为1073741822
System.out.println(b>>>2);
//位与,答案 0
System.out.println(b&2);
//位或,答案 -6
System.out.println(b|2);
//位异或,答案 -6
System.out.println(b^2);
//位非,答案 7
System.out.println(~b);
}
}
人懒,其他我就不画了。。。其实都差不多,原理就是这个。。