位移运算(左移,右移)

1.左移,当左移的位数超过该数值类型的最大位数时,编译器会用左移的位数去模类型的最大位数,按余数进行位移。丢弃最高位,0补最低位。左移相当于乘,左移一位相当于乘2,左移两位相当于乘4,即左移位数乘于2的n次方。

如:

int i = 1,j=0x80000000;//设int为32位;

i=i<<33;//33%32=1 左移1位,i变成2

j=j<<33;//33%32=1 左移1位,j变成0,最高位被丢弃

 

2.右移,对于有符号整数,比如int类型 ,会保持符号位不变,符号位向右移动后,正数的补0,负数补1,即汇编语言中的算数右移,但是移动的位数超过类型长度时,会取余数,然后移动余数个位。右移相当于除,右移一位除以2,右移两位除以4,即右移位数除以2的n次方。

如:

int i = 0x80000000;

i = i>>1;//i的值不会变成0x40000000,而是oxc0000000

 

 

 

<<左位移运算:5<<1,将00000101左移一位,变成00000010,是10D。如:5<<4  == 5乘以2的4次方,值为80。

>>右位移运算:5>>1,将00000101右移一位,变成00001010,是2D。如:5>>4  ==  5除以2的4次方,值为0。

//0X表示十六进制,0表示八进制。

//二进制计算:2的0次方+2的1次方+2的2次方+···+2的N次方。

//与运算:两真为真,两假为假,真假为假。

//或运算:两真为真,两假为假,真假为真。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值