`
点点与麦兜
  • 浏览: 9716 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

JAVA位运算符之简要说明

 
阅读更多

首先要了解各个进制数之间的转换

 例如:

         十进制数    ->  二进制数
         0  ->  0
         1   ->  1
         2   ->  10
         3   ->  11
         4   ->  100


举例(计算机字长为8为列):
十进制数5:

原码: 0000 0101
反码:正数的反码与其原码相同,负数的反码为其原码除符号位以外的各位按位取反

         0000 0101

补码:正数的补码与其原码相同,负数的补码为其反码在最低位加1

         0000 0101

 

十进制数  -5:

原码: 0000 0101
反码: 1111 1010

补码: 1111 1011


位与(&)
运算规则:一真一假即为假,两假为假,两真为真。

 

 例:0&0=0;   0&1=0;    1&0=0;     1&1=1;

 

	//0 1 10 11 100 101 110 111 1000 1001
	//0 1 2  3   4   5   6   7    8   9

	int a = 5;//0 0101
	int b = 6;//0 0110
	//-----------------------------------
		     //0 0100
	System.out.println(a&b);
	//结果为4

	//判断int型变量a是奇数还是偶数 
	//偶数的最后一位都是0  0&1 =》为0 所以结果只有0和1两个值
	//a&1  = 0 偶数 
      	//a&1  = 1 奇数
	
	// & 和 &&
	//前面是位运算符 ,后面是逻辑运算符。对于A&B,不管A是否为假,仍然要判断B。而A&&B 第一个不成立就不会去判断第二个了
	
	if(a==b&b==c){
	}
	//用&的话 程序会先判断a是否=b 如果不等于. 还要跳过判断b是否=c.
	
	if(a==b&&b==c){
	}
	//&&的话..程序判断a!=b的话 直接后面的b是否=c就不做判断了




位或(|)
运算规则:有真则真,两假为假。

 

例:0|0=0;   0|1=1;   1|0=1;    1|1=1;

	//0 1 10 11 100 101 110 111 1000 1001
	//0 1 2  3   4   5   6   7    8   9

	int a = 5;//0 0101
	int b = 6;//0 0110
	//-----------------------------------
		     //00111
	System.out.println(a|b);
	//结果7
	
	// | 和 ||
	//前面是位运算符 ,后面是逻辑运算符。对于A|B,不管A是否为假,仍然要判断B。而A||B 第一个成立就不会去判断第二个了



位异或(^)
运算规则:0^0=0;   0^1=1;   1^0=1;   1^1=0

 

	//0 1 10 11 100 101 110 111 1000 1001
	//0 1 2  3   4   5   6   7    8   9

	int a = 5;//0 0101
	int b = 6;//0 0110
	//-----------------------------------
		     //0 0011
	System.out.println(a^b);
	//结果3



//不用第三变量,交互两个数的值
 public static void swap(){
	int a = 4;   
	int b = 2;    
	a ^= b;  //a = a^b;   a = 1
	b ^= a;  //b = b^a;   b = 4
	a ^= b;  //a = a^b;   a = 2;
	System.out.println("a="+a+"         "+"b="+b);
    }



位非(~)
运算规则:~1=0;   ~0=1;

	//0 1 10 11 100 101 110 111 1000 1001
	//0 1 2  3   4   5   6   7    8   9
	
	int a = 5;//0000 0000 0000 0101
	
	//-----------------------------------
		  //1111 1111 1111 1010  这是-6
	System.out.println(~a);
	//结果为 -6



右移(>>)

例如:a = a >> 3 将a的二进制位右移3位(将2转为2进制再进行位移)

2 => 10
右移两位
0010 => 0000  为0

3 => 11
右移一位
0011 => 0001  为1

无符号右移(>>>)
不管是正数还是负数左边都补0



左移(<<)

例如:a = a << 3 将a的二进制位左移3位

2 => 10
左移两位
0010 => 1000  为8

3 => 11
左移一位
0011 => 0110  为6


int  mulTwo( int  n){ //计算n*2    
    return  n<<1;  
}  

int  divTwoPower( int  n, int  m){ //计算n/(2^m)   
    return  n>>m;  //除以2的m次方
}  

//求两个数的平均值
int  getAverage( int  x,  int  y){  
        return  (x+y) >>  1 ;   //将两个数的和右移一位 也就是除以2
}  




二进制数10的十进制数为2,二进制数100的十进制数为4,以此类推,
可见十进制数的两倍这是二进制数左移了一位,
所以除以2的话就是右移1位了,如果要除以4 也就是 2*2 那就右移两位,以此类推。

 

0
1
分享到:
评论

相关推荐

    java数据类型和运算符共3页.pdf.zip

    在这个“java数据类型和运算符共3页.pdf.zip”压缩包中,我们预计会找到有关Java编程基础知识的简要介绍,特别是关于数据类型和运算符的部分。下面是对这两个关键概念的详细解释: 1. **Java数据类型**: - **基本...

    java中的自增(++)和自减(--)运算符.pdf

    此外,虽然题目中没有直接涉及,但这里也简要介绍下按位运算符: 1. 按位与运算(&):对两个操作数的每个位进行比较,如果两个位都是1,则结果位为1,否则为0。 2. 按位或运算(|):如果两个操作数的任一位为1,结果...

    ACCP5.0 S1java第二章作业答案

    1. **Java基础语法**:包括变量声明、数据类型(如整型、浮点型、字符型、布尔型)、常量、运算符、流程控制(如if语句、switch语句、for循环、while循环)等。 2. **类与对象**:这是面向对象编程的核心。学生需要...

    Java基础教程PPT

    最后,可能会简要介绍Java的泛型、注解和枚举,这些都是现代Java编程中不可或缺的特性。 在学习过程中,PPT通常会包含实例代码和解释,帮助学习者更好地理解和应用这些概念。同时,课后练习和项目实践是巩固理论...

    JAVA计算器源代码

    3. **运算符**:Java支持各种算术运算符,如`+`、`-`、`*`和`/`,这些运算符在计算过程中用于执行加、减、乘、除操作。 4. **条件语句**:如`if-else`结构,用于根据用户的输入选择不同的计算方法。 5. **异常处理...

    Java程序设计 Java设计与应用

    2. **Java语法**:讲解Java的基本数据类型、变量、常量、运算符、控制流程(如if语句、switch语句、for循环、while循环)、函数定义和调用、数组和字符串操作。 3. **面向对象编程**:深入探讨类、对象、封装、继承...

    Java教程中文版

    - **常用Java包**:列出并简要介绍一些常用Java包的功能,如`java.lang`、`java.util`等。 - **模块2:标识符、关键字和类型** - **标识符规则**:讲解标识符的命名规则,包括合法字符集和命名习惯。 - **关键字...

    java 学习要点总结

    java 的移位运算符: 1. 左移 带符号右移。 2. 右移 &gt;&gt;:无符号右移。 3. 无符号右移 &gt;&gt;&gt;。 java 中的数组: 1. java 中一维数组在定义的时候是不能够分配空间的,例如:int num[];// 中括号中不能写大小。 2. ...

    MIT JAVA 阿德莱德大学JAVA课程

    2. **语法结构**:涵盖Java的基本语法,如变量、数据类型、运算符、流程控制语句(if、switch、for、while)、异常处理和函数的使用。 3. **类库与API**:讲解Java标准库中的各种类和接口,如集合框架(List、Set、...

    Java核心技术 卷 I+卷II 第11版 最新英文版 pdf

    Horstmann和Gary Cornell两位资深Java专家撰写。这套书籍全面覆盖了Java语言的基础和高级特性,对于深入理解和掌握Java编程具有极大的帮助。 卷I《Fundamentals》主要关注Java的基础知识,包括以下几个方面: 1. ...

    疯狂Java讲义精粹随书光盘

    1. **Java基础**:包括Java语法、数据类型、运算符、流程控制语句(如if、switch、for、while)、数组和集合框架的基础知识。 2. **面向对象编程**:讲解类、对象、封装、继承、多态等概念,以及如何设计和实现复杂...

    java(ppt)课件

    14. **Java EE**:对Java企业版的简要介绍,如Servlet、JSP、EJB、Spring框架等内容。 15. **Java最新特性**:可能涵盖Java 8及更高版本的新特性,如Lambda表达式、Stream API、Optional类等。 通过这些PPT,学习...

    java代码-例2-4 理解复合赋值运算符。

    `README.txt`文件通常会包含对程序的简要说明,解释如何运行代码以及预期的输出,可能还会提供关于复合赋值运算符的一些额外理论或注意事项。在阅读此文件时,应关注有关如何解读代码以及观察运算符如何影响变量值的...

    Java 基础ppt.zip

    17. **JNI与JVM**:简要介绍Java Native Interface和Java虚拟机的工作原理。 18. **基本设计模式**:介绍单例、工厂、观察者等常见设计模式。 通过这些知识点的学习,初学者将能够建立起坚实的Java编程基础,为...

    侯捷-java编程思想.pdf

    1. **Java基础知识**:书中首先介绍了Java的基本语法,包括数据类型、变量、运算符、流程控制(如if-else,switch,for,while等)、方法以及类与对象的概念。这些是Java编程的基础,为后续深入学习打下坚实基础。 ...

    Introduction to Programming Using Java

    - 文件I/O简介:简要介绍文件输入输出的基本操作。 - 使用Scanner进行输入:演示如何利用Scanner类读取用户的键盘输入。 #### 六、细节知识点 - **表达式细节**: - 算术运算符:列出常见的算术运算符,并给出...

    java实用电子教程

    8. **Java EE开发**:简要介绍Java企业版(Java EE),包括Servlet、JSP、JDBC数据库连接、EJB组件、MVC设计模式等,用于构建服务器端应用程序。 9. **Java 8及新特性**:讨论Java 8引入的新特性,如Lambda表达式、...

    Java基础知识点复习资料.docx

    Java是一种广泛使用的面向对象的编程语言,其基础知识涵盖了多个方面,包括...以上就是Java基础知识点的简要概述,理解和掌握这些概念是成为Java程序员的基础。对于初学者来说,不断实践和深入学习是提升技能的关键。

Global site tag (gtag.js) - Google Analytics