二进制、位运算、位移运算
思考题
1、请看下面的代码段,回答a,b,c,d,e结果是多少?
public static void main(String []args){
int a=1>>2;
int b=-1>>2;
int c=1<<2;
int d=-1<<2;
int e=3>>>2;
//a,b,c,d,e结果是多少
System.out.println("a="+a);//a=0
System.out.println("b="+b);//b=-1
System.out.println("c="+c);//c=4
System.out.println("d="+d);//d=-4
System.out.println("e="+e);//e=0
}
注:">>"代表算术右移,"<<"代表算术左移,">>>"代表逻辑右移
2、请回答在java中,下面的表达式运算的结果是:
~2=?//-3
2&3=? //2
2|3=? //3
~-5=? //4
13&7=? //5
5|4=? //5
-3^3=? //-2
注:"~"代表位取反,"&"代表位与,"|"代表位或,"^"代表位异或
二进制--基本概念
二进制是逢2进位的进位制,0、1是基本算符。
现代的电子计算机技术全部采用的是二进制,因为它只使用0、1两个数字符号,非常简单方便,易于用电子方式实现。计算机内部处理的信息,都是采用二进制数来表示的。二进制(Binary)数用0和1两个数字及其组合来表示任何数。进位规则是“逢2进1”,数字1在不同的位上代表不同的值,按从右至左的次序,这个值以二倍递增。
注:1个字节=8位bit,
bit最高位是符号位如:■□□□□□□□黑色方框为符号位。
符号位0代表正数,1代表负数
二进制--原码、反码、补码
对于有符号的而言:
1、二进制的最高位是符号位:0表示正数,1表示负数
2、正数的原码、反码、补码都一样
3、负数的反码=它的原码符号位不变,其它位取反
4、负数的补码=它的反码+1
5、0的反码,补码都是0
6、java没有无符号数,换言之,java中的数都是有符号的
7、在计算机运算的时候,都是以补码的方式来运算的。
位运算符和移位运算
java中有4个位运算,分别是“按位与&、按位或|、按位异或^,按位取反~”,它们的运算规则是:
按位与&:两位全为1,结果为1
按位或|:两位有一个为1,结果为1
按位异或^:两位一个为0,一个为1,结果为1
按位取反:0->1,1->0
java中有3个移位运算符:
>>、<<算术右移和算术左移,运算规则:
算术右移:低位溢出,符号位不变,并用符号位补溢出的高位
算术左移:符号位不变,低位补0
>>>逻辑右移,运算规则是:低们溢出,高位补0
计算过程举例
注意:计算机运算的时候,都是以补码的方式来运算的,如果补码计算结果负数,则需要把补码转为原码
1>>2
推导出-1>>n(n>1的正整数) 结果都为-1
3>>>2
3的原码
00000000 00000000 00000000 00000011
因为正数的原码、反码、补码都一样
所以3的补码
00000000 00000000 00000000 00000011
>>>逻辑右移2位结果为
按位取反~
韩顺平.循序渐进学.java.从入门到精通.第21讲-集合.avi
http://v.youku.com/v_show/id_XMjE0NTkwMTY0.html?f=5226664&from=y1.2-3.4.24
相关推荐
绝对韩顺平老师的讲解视频!教学文件打包太大,就一个一个的上传了! avi格式的,最好用KMPlayer来播放,下载地址:https://www.kmplayer.com/home 后续还上传,韩顺平老师教学的源代码!
支持十进制运算,二进制运算.zip"文件中,我们可以预见到这可能是一个关于大数运算的程序或库,它不仅支持常见的十进制运算,还特别强调了二进制运算。 1. **大数运算**:大数运算通常在需要精确计算或处理大数据量...
在二进制中,每个位(bit)代表一个幂次的2,例如,二进制数1011代表\(2^3 + 2^1 + 2^0 = 8 + 2 + 1 = 11\)。这种表示方法使得电子设备能更容易地处理和存储数据,因为电路中的开和关状态可以对应于二进制的0和1。 ...
在编程领域,特别是C语言和其派生的MFC(Microsoft Foundation Classes)框架中,整数的二进制位移运算是一种重要的算术操作。位移运算符在处理位模式、数据存储、位掩码以及优化计算等方面发挥着关键作用。本程序源...
4. 左移、右移操作,模拟位移运算。 在线十六进制计算器则专注于十六进制数的运算,十六进制是一种常用的计算机表示方式,常用于内存地址和颜色代码等领域。用户可以执行以下操作: 1. 十六进制加法、减法、乘法和...
### JAVA位运算详解 在Java编程中,位运算是一门精细的艺术,涉及到对整数类型的二进制位进行直接操作。这些操作不仅能够优化代码执行效率,还常用于实现特定的算法需求。本文将深入探讨Java中的位运算,包括位...
在实际编程中,理解这些二进制运算对于低级编程,如操作系统开发、硬件驱动编写或嵌入式系统设计至关重要。熟练掌握二进制数运算不仅能提高编程效率,还能帮助开发者更好地理解和解决计算机底层的问题。
这种方法适合理解二进制和位运算,但实际编程中较少使用。 4. **循环处理**: - 通过遍历十六进制字符串的每个字符,计算其对应的十进制值并累加。每个字符可以通过查表或者`std::isdigit`和`std::isxdigit`函数来...
7. **二进制位移运算**:位左移(`)和位右移(`>>`)运算符,常用于快速乘除以2的幂。例如,`10 等于`1000`,相当于`10 * 2^2`。 8. **二进制在计算机中的应用**:二进制数不仅用于数值计算,还用于存储数据(如...
作为一个专业的IT工具,它允许用户执行包括加法、减法、乘法、除法以及位移、按位与、按位或、按位异或等在内的各种二进制运算。这些运算对于理解和处理二进制数据至关重要,尤其在计算机科学、编程、硬件设计等领域...
- **位运算**:在编程中,可以使用位移操作(左移`和右移`>>`)以及按位与`&`、按位异或`^`等运算符来实现整数到二进制的转换。 3. **编程语言中的转换函数**: - 在Python中,可以使用内置函数`bin()`,如`bin...
### 二进制基础上的位运算详解 #### 一、位运算概述 位运算是一种直接在二进制层面上操作数据的运算方式。相比于普通的算术运算,位运算执行效率更高,广泛应用于网络编程、硬件控制等场景。本文将详细介绍五种...
3. 位运算支持:对二进制数进行位移、按位与、按位或、按位非、按位异或等操作。 4. 布尔逻辑运算:用户可以输入布尔表达式,程序会计算并显示结果。 5. 教学模式:提供相关知识介绍和实例,帮助用户理解概念。 总...
二进制乘法可以分解为一系列的位移和加法,每一步都将一个操作数左移一位,然后与另一个操作数相乘,最后累加结果。二进制除法则涉及反复的位移和比较,直到被除数小于除数为止。 在进行二进制定点数运算时,还需要...
7. **二进制在编程中的应用**:通过实例展示如何在编程语言中使用二进制运算符进行位操作,比如位移、位掩码等。 8. **实践活动**:设计一些实验或项目,让学生通过实际操作理解二进制,如制作二进制计数器、模拟...
例如,二进制到十进制可以使用位移和加法,十进制到二进制则可以使用除以2和模运算。这些方法对于理解底层机制非常有帮助,但通常在实际编程中,直接使用内置的转换函数更为简便和高效。 总之,理解和掌握二进制与...
7. **二进制在计算机程序中的作用**:讨论编程语言中的二进制数据类型,以及如何在代码中进行二进制运算。 8. **二进制在网络通信中的角色**:讲解网络传输的数据如何以二进制形式进行编码和解码。 9. **二进制在...
- 每次循环中,使用模运算和除2操作获取当前位的二进制值,然后逆序存储,因为二进制转换通常从低位到高位,而我们需要的是高位到低位的顺序。 - 输出当前的二进制数。 无论哪种方法,都需要处理好边界条件,确保...
除了基本的转换,二进制计算器可能还支持其他高级功能,如位运算(如AND、OR、NOT、XOR)、二进制位移(左移和右移)、进制数的加减乘除等。位运算在计算机编程中广泛用于逻辑判断和数据处理,位移操作则常用于快速...
Java中的位运算,如与(&),或(|),异或(^),左移(),右移(>>)和无符号右移(>>>), 是在二进制层面操作数字的重要手段。例如,`&`操作符可以用来做掩码操作,检查或设置二进制位;`|`用于合并位,`^`用于翻转指定位,...