C语言16位拆成高低八位,和高低八位合成16位数据

移位的概念

计算机中的移位操作分为算术移位和逻辑移位。其中,

算术移位:对有符号数的移位,如c中的int,short等。

逻辑移位:对无符号数的移位,如c中的unsigned int,unsigned short等。

移位的操作

算术移位:

          对于正数,由于原码,补码,反码都相同。因此不管左移还是右移,空缺的位都添零。

          对于负数,原码不管左移还是右移都是添零

                            反码不管左移还是右移都是添一

                            补码左移添零,右移添一

逻辑移位:

         任何无符号数移位都是再空缺的位添零。

 

代码:

#include

main()

{

    unsigned short int x, y, z;

    scanf("%hu %hu", &x, &y);

    y = y >> 8;

    x = x >> 8;

    x = x << 8;

    z = x + y;

    printf("%hu\n", z);

}

//scanf()中要用%hu,如果用%d,x的值会被莫名置零,导致程序出错。

 

 

你可能感兴趣的:(移位,c语言,学习路上)