zoukankan      html  css  js  c++  java
  • 有符号数和无符号数的转换

    参考:http://www.cnblogs.com/tgycoder/p/4218696.html

    int main(void)
    {

      /*  一个字节 无符号范围为[0, 255],有符号范围为[ -128,0],[0,127] */
      signed char b = -120;
      signed short c = -60000;
      unsigned char a;
      unsigned short d;

      a = (unsigned char)b;
      d = (unsigned short)c;

      printf("%d ", a);   /* 136 = -120 + 256 */
      printf("%d ", d);   /* 5536 =  - 60000 + 65536 */

      return 0;
    }

    有符号数转换为无符号数时,负数转换为大的正数,相当于在原值上加上2的n次方,而正数保持不变

    int main(void)
    {

      /* 两个字节 无符号范围为[0, 65535],有符号范围为[ -32768,0],[0,32767] */
      signed char b = 0;
      signed short c = 0;
      unsigned char a = 128;
      unsigned short d = 32768;

      b = (signed char)a;
      c = (unsigned short)d;

      printf("%d ", b);  /* -128 = 128 - 256*/
      printf("%d ", c);  /* -32768  = 32768 - 65536*/

      return 0;
    }

    无符号数转换为有符号数时,对于小的数将保持原值,对于大的数将转换为负数,相当于原值减去2的n次方

    当表达式中存在有符号数和无符号数类型时,所有的操作都自动转换为无符号类型。可见无符号数的运算优先级高于有符号数

  • 相关阅读:
    拥塞避免
    计算机网络常考
    [CODEVS1014]装箱问题
    [CODEVS2055]集合划分
    [CODEVS3641]上帝选人
    [GRYZ2014]递增子序列最大和
    [GRYZ2014]最大连续子序列的和
    金矿模型看动归
    [CODEVS1220]数字三角形
    [CODEVS1294]全排列
  • 原文地址:https://www.cnblogs.com/Deanboy/p/7565398.html
Copyright © 2011-2022 走看看