左移运算就是将一个数的所有二进制位向左移动若干位,移动的位数由右操作数指定。右操作数必须是非负值,左边空出的位用0填补,高位左移,溢出则舍弃该高位。例如: 3 << 2 的计算过程: 3的原码(0000 0011) 3的补码(0000 0011) 左移两位(0000 1100) 结果是12-5 << 2 的计算过程: -5的原码(1000 0101)...
左移两位:00000000 00000000 00000000 00001000 二进制数00000000 00000000 00000000 00001000对应的十进制值为8,由此我们得知2 << 2 = 8,由此,我们能得到对于一个正整数x,每左移一位,x的值就变为原来的2倍。那么负整数呢?左移运算结果又是多少?其实跟正整型数是一样的结果,只不过我们在左移运算的时候要关心...
利用位操作:"<<"就是左移 ">>"就是右移 举个例子:将a左移2位,然后赋给a a<<=2 也即是a=a<<2 在C语言中左移1位,相当于乘2,右移相当于除2。
<<:左移位 >>:右移位 例如:8<<2:也就是将1000(8的二进制)左移两位,结果为100000(二进制)=32(十进制)8>>2:也就是将1000(8的二进制)右移两位,结果为10(二进制)=2(十进制)
第一个printf()中的表达式a<<2 表示a左移两位,右端空缺处补,已知a=5,转成二进制数是0000 0101,所以a<<2后变成0001 0100,转成十进制数是20,表达式b>>2 这个移位的分析与上例1中的 b1 >>2 相似,得到的值是-2,所以第一个printf()语句输出结果是:20,-2。对于第二个printf()中,表达式a+b>...
// 二进制表示为 1111 1111 1111 1111 1111 1111 1111 0110intleftShiftResult=num<<2;// 左移两位...
C语言中的位操作是一种基于二进制位级的操作,它可以对二进制位进行各种操作,例如,按位与(&),按位或(|),按位异或(^),按位取反(~),左移(<<)和右移(>>)。以下是一些基本的位操作符的说明:&按位与:如果两位都是1,结果是1。否则结果是0。|按位或:如果两位至少有一位是1,结果是1。否则...
就是把一个数转化成二进制再直接对他进行操作 例如:45>>2 //45右移两位 45的二进制为:101101 右移两位就为: 001011 001011再转化为十进制为:11 所以45>>2= 11 左移运算符 45<<2 45的二进制为:101101 左移两位就为:10110100 10110100再转化为十进制为:180 所以45<<2=180 ...
<<二进制左移(SHL)运算符: 将一个运算对象的各二进制位全部左移若干位,右边补0,超出对应类型范围时左边的位自动丢弃。 例: printf("%d",3<<2);//结果为12 (3)10= (11)2 *(3)10表示十进制数3,(11)2表示二进制数11 向左移动两位后,右边补0,得到 (1100)2= (1*23+1*22+0*21+0*20)10=...