《【2017年整理】C,C++位的移位操作》由会员分享,可在线阅读,更多相关《【2017年整理】C,C++位的移位操作(2页珍藏版)》请在金锄头文库上搜索。
C/C+位的移位操作 左移与右移1.左移运算符()是双目运算符,其功能是把运算符左边的运算数的各二进位全部右移若干位,移动的位数按运算符右边的数指定。在进行右移时对于有符号的数需要注意符号问题,当为正数时,最高位补 0,而为负数时,最高位补 0 或 1 取决于编译系统的规定,移入 0 的称为逻辑右移 ,移入 1 的称为算术右移。Int x= 3;3 的二进制为:00000011 右移 1 位后为 00000001Int a= X1 此时 a = 1; 将 0x12345678 转换为 0x78563412#includeint main()unsigned int a =0x12345678unsigned int b,c,d,e;unsigned char *p =(unsigned char*)&a;b =(*p)24;/将低字节的数据左移 24 位即 3 个字节将 78 移动到 12 位置c = *(p+1)16;d = *(p+2)8;e = *(p+3);printf(b=%0x,c=%0x,d=%0x,e=%0xn,b,c,d,e);a =b+c+d+e;printf(“a=0x%0xn”,a);return 0;运行结果如下:b=78000000,c=560000,d=3400,e=12a=0x78563412