一、基础知识
二、实例解析(重点)
三、参考文章
一、原码、补码、反码
http://baike.baidu.com/view/742694.htm
Thinking In Java
3.1.8 移位运算符
移位运算符面向的运算对象也是二进制的“位”。可单独用它们处理整数类型(主类型的一种)。左移位运算符(<<)能将运算符左边的运算对象
向左移动运算符右侧指定的位数(在低位补0)。“有符号”右移位运算符(>>)则将运算符左边的运算对象向右移动运算符右侧指定的位数。
“有符号”右移位运算符使用了“符号扩展”:若值为正,则在高位插入0;若值为负,则在高位插入1。Java也添加了一种“无符号”右移位运算符(>>>),
它使用了“零扩展”:无论正负,都在高位插入0。这一运算符是C或C++没有的。
二、PS::(实例解析)
System.err.println("-20 >> 3===" + (-20 >> 3));//两次取补32位
System.err.println("20 >> 3===" + (20 >> 3)); //2 (20/8=2)
System.err.println(("-20 << 3==")+ (-20 << 3)); //两次取补32位
System.err.println("20 << 3==" + (20 << 3)); //160 (20*8=160)
System.err.println("-20 >>> 3===" + (-20 >>> 3)); //一次取补,移位,结果
System.err.println("20 >>> 3===" + (20 >>> 3)); //2 (20/8=2)
//sepcial
System.err.println("-1 << 10===" + (-1 << 10));//两次取补32位
System.err.println("-1 << 24===" + (-1 << 24));//两次取补32位
System.err.println("-1 >> 10" + (-1 >> 10));
System.err.println("-1 >> 24" + (-1 >> 24));
System.err.println("-20 >> 10==" + (-20 >> 10)); ////两次取补32位
P.p("-----" + (4 >> 3));
System.out.println("=====" + (-1 >>> 1));
}
}
/*
* 11111000 –8 >>1 11111100 –4
1、求-8的补码(反码+1)==>11111000
2、移位(>>1)去掉右边最后一位,在左边+1(因为是负数)==>1111 1100(最高位为1,值为负)
3、再求补码(反码+1)
*/
/**
int a = -1; a = a >>> 24;
下面用二进制形式进一步说明该操作:
11111111 11111111 11111111 11111111 int型-1的二进制代码>>> 24
无符号右移24位00000000 00000000 00000000 11111111 int型255的二进制代码
*/
/*
在数字没有溢出的前提下,对于正数和负数,左移一位都相当于乘以2的1次方,左移n位就相当于乘以2的n次方。
右移一位相当于除2,右移n位相当于除以2的n次方。
对于正数来说和带符号右移相同,对于负数来说不同。
*/
/*
System.err.println("-1 << 10===" + (-1 << 10));//两次取补32位
1、1的原码:00000000 00000000 00000000 00000001
2、1的补码: 11111111 11111111 11111111 11111111 (原码=反码+1)
3、 11111111 11111111 11111100 00000000 (左移10位,低位补0,最高位为1,值为负)
4、 00000000 00000000 00000011 11111111 ==>(+1)
00000000 00000000 00000100 00000000 ==>1*2^10=1024 结果为-1024 (第三步结果的补码)
*/
-8 >> 1
/*
* 11111000 –8 >>1 11111100 –4
1、求-8的补码(反码+1)==>11111000
2、移位(>>1)去掉右边最后一位,在左边+1(因为是负数)==>1111 1100(最高位为1,值为负)
3、再求补码(反码+1)
*/
三、Reference:
http://wenku.baidu.com/view/a7b747a2284ac850ad024276.html
http://zhidao.baidu.com/question/318286286.html
http://blog.163.com/zh_y_yang/blog/static/181552412201132685034960/
http://jinguo.iteye.com/blog/540150
think in java
分享到:
相关推荐
除了基本的进制转换外,给定的内容中还提到了一些C#中的位操作符,这些操作符对于处理二进制数据非常有用。例如: - `~` (按位取反) - `&` (按位与) - `|` (按位或) - `^` (按位异或) - `(左移) - `>>` (右移) 这些...
例如,将十进制数55转换为二进制,可以使用除2取余法,55除以2得到余数1,然后依次计算,直到余数为0,将所有余数倒序排列就得到二进制数110111。相反,要将二进制数转换为十进制,可以使用位权法,将每个位上的数字...
10. 汇编语言:使用助记符(如ADD、STO)代替二进制,便于人类阅读和编写,但仍然是低级语言,直接对应机器指令。 11. 计算机采用二进制的原因:二进制系统简单,只有两个状态(0和1),易于实现电子设备的物理开关...
在进行ASCII码的换算时,主要涉及到的是从二进制到十进制或十六进制的转换,以及根据特定的应用场景将控制字符转换为其对应的ASCII值。 - **二进制到十进制转换**:例如,将二进制数`00000010`转换为十进制数`2`,...
14. **进制转换**:二进制加减法基于二进制逻辑运算,十进制小数转二进制小数采用乘2取余法。 15. **位的概念**:bit代表二进制位,是计算机中最小的数据单位。 16. **汉字编码**:在汉字系统中,一个汉字的内码...
这是基于计算机存储单位的二进制换算规则,即1GB = 1024MB,1MB = 1024KB,1KB = 1024B。 2. 数制转换: - 十进制数45转换成二进制、八进制和十六进制的方法是使用除法和余数法。45的二进制表示为101101,八进制...
10. 单位换算:例如269在十进制中是10EB(10的14次方字节)、1010.101在二进制中是11.33B(二进制小数),以及1010101在二进制中是128D(十进制)。 11. 图像分辨率:如32X32表示图像的像素大小,32B、64B、72B和...
汇编语言使用助记符(如ADD、STO)代替二进制指令,便于人类阅读。 计算机采用二进制是因为它的运算规则简单,易于物理实现。计算机的内存储器比外存储器读写速度更快,内部信息以二进制形式存储。计算机能够处理...
23. **二进制数**:计算机内部采用二进制表示所有信息。 24. **位**:数据的最小单位,二进制数的一位。 25. **字节**:8位二进制数,是存储容量的基本单位。 26. **ASCII码**:用于表示字符的标准编码。 27. **十...
5. 计算机内部所有信息都是以二进制形式存储的,二进制是最基本的数字系统,由0和1组成。 6. 第三代电子计算机使用的是中、小规模集成电路,这是计算机发展的一个关键里程碑,大大提高了计算机的性能和可靠性。 7....
2. 存储器容量:存储器容量通常以二进制位(bit)或字节(Byte)来衡量,一个字节由8个二进制位组成。 3. 计算机内部存储:在计算机内部,所有信息都以二进制编码的形式存储,包括ASCII码或BCD码等。 4. 字长:...
23. **二进制的理由**:计算机采用二进制主要是因为其结构简单,运算规则直观,易于硬件实现。 24. **不同进制比较**:在给定的四个数中,(1101100)2是最小的,因为它是二进制数,对应的十进制数是108。 25. **...
- 二进制:45的二进制形式为101101。 - 八进制:45的八进制形式为55。 - 十六进制:45的十六进制形式为2D。 ### 3. 冯·诺伊曼架构计算机的基本构成 **知识点**:冯·诺伊曼架构的基本组成部分及其功能。 **...
15. 1MB等于1024*1024字节,这是二进制单位换算的基本规则。 16. 在Word2003中,状态栏显示页号、节号、页数和总页数等信息。 17. Windows 98的资源管理器中,同一驱动器不同目录下可以有同名文件,但同一目录内不...
- **BCD码**: 二进制编码的十进制数,例如(931)10 = (100100110001)2。 #### 七、二进制四则运算 - **加法规则**: 0 + 0 = 0; 0 + 1 = 1 + 0 = 1; 1 + 1 = 10 - **减法规则**: 0 - 0 = 0; 1 - 0 = 1; 1 - 1 = 0; 0...
存储容量的基本单位Byte代表8个二进制位,一个ASCII码字符通常用1个Byte表示。计算机键盘是输入设备,计算机能直接执行的是机器语言程序,操作系统属于系统软件,计算机系统包括硬件和软件系统。计算机病毒的传播不...
这是基于二进制的换算规则,即每个单位都是前一个单位的2的10次幂。 2. **数字系统转换**: - 十进制数45转换为二进制、八进制和十六进制是理解不同进制的基础。十进制数45在二进制中表示为101101,因为45除以2的...