>> << >>> 左移,右移,逻辑右移,运算规则,Shift left, shift right,logical right shift . Bit Operator rules

>>(Arithmetic right shift  算术右移 (/2)): 低位溢出,符号位不变,符号位补高位(0 or 1)

<<(Arithmetic left shift 算术左移 (*2)):高位溢出,符号位不变,低位补 0 

>>>:(logical right shift)  === (Usigned right shift) 无符号右移,低位溢出,高位补0 

NO NO NO have    <<<

ex1:

int a=1>>2;// (/2/2) = 0 (Java 默认int type 1/2/2=0.25 自动转化数据类型 (int)0.25 = 0

@1.正数1(3码合1

00000000 00000000 00000000 00000001 补码运算)

@2.>> (右移,补符号)

—》00000000 00000000 00000000 00000001 

—》0000000000 00000000 00000000 00000001   (补码运算,原码显示)

ex2:

int b=-1 << 3;// (*2*2*2)= -8

@1.负数(-1)

#1.负数原码

10000000 00000000 00000000 00000001

#2.负数反码(符号位不变,其余取反)

11111111 11111111 11111111 111111110

#3.负数补码(反码+1)

11111111 11111111 11111111 111111111(补码运算)

第一步就是将,负数转化补码,可以参与运算,java中

@2.<< 3 (左移3位)

11111111 11111111 11111111 111111111  (补码开始操作)

11111111 11111111 11111111 111111111000(补3个0)

《—定框,左滚动—   11111111 11111111 11111111 111111111000 (溢出3个1,符号位不变)

11111 11111111 11111111 111111111000  (结果显示,补码)

左移动,二进制,(就像电子显示屏幕,就那么大的长方形的框,多出的,就滚动走进溢出,滚动走进的就是补位),滚走111,但是符号位不变,滚进000

@3.补码还原码

11111 11111111 11111111 111111111000   (补码)

11111 11111111 11111111 111111111000       (反码=补码-1)

11111 11111111 11111111 111111110111            (反码)

11111 11111111 11111111 111111110111   (原码,反码,符号位不变,取反)

10000 00000000 00000000 00000001000   (调整8bits=1 Byte)

10000000 00000000 00000000 00001000    (原码 -8)

将补码换算原码,显示输出(why? 补码运算,简化底层硬件设计,没有正负0)

public class BitOperator{
	public static void main(String[] args){
		
		System.out.println(1>>2);//0
		System.out.println(-1<<3);//-8
		
	}
}
大数据

玩转SpringCloud Stream

2025-3-1 23:12:28

大数据

金融大数据实时异常检测平台有哪些(金融查大数据是什么)

2025-3-1 23:12:30

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧