1. 无符号整数 unsigned int

对unsigned int进行移位操作时,最高位不会有任何特殊性。

无符号整数必须使用%u来打印

#include <stdio.h>

int main(int argc, char const *argv[])
{
    unsigned int a;

    a=0xC0000000;
    printf("%u %X %d\n", a,a,a);
    a=a<<1;
    printf("%u %X %d\n", a,a,a);
    a=a>>1;
    printf("%u %X %d\n", a,a,a);

    return 0;
}

结果:

3221225472 C0000000 -1073741824
2147483648 80000000 -2147483648
1073741824 40000000 1073741824
  1. 有符号整数 int

对int进行移位操作时,必须考虑最高位,向右移位操作相当于 (有符号数值)/2。

#include <stdio.h>

int main(int argc, char const *argv[])
{
    int a;

    a=0xC0000000;
    printf("%u %X %d\n", a,a,a);
    a=a<<1;
    printf("%u %X %d\n", a,a,a);
    a=a>>1;
    printf("%u %X %d\n", a,a,a);

    return 0;
}

结果:

3221225472 C0000000 -1073741824
2147483648 80000000 -2147483648
3221225472 C0000000 -1073741824

相关文章:

  • 2022-12-23
  • 2021-07-21
  • 2021-10-27
  • 2022-12-23
  • 2022-12-23
  • 2021-11-22
  • 2021-12-01
  • 2021-11-25
猜你喜欢
  • 2021-10-23
  • 2022-12-23
  • 2021-07-03
  • 2022-12-23
  • 2022-12-23
  • 2022-01-08
  • 2022-01-07
相关资源
相似解决方案