当前位置:   article > 正文

C 语言整数强制类型转换_-4321的补码

-4321的补码

C 语言强制类型转换

注意

C 语言中定点整数是使用补码存储的

无符号数和有符号数强制类型转换

无符号数和有符号数强制类型转换,不改变数据内容,改变解释形式

例如数字 -4321

  • 原码:1001 0000 1110 0001 (最高位为符号位 1:负数,0:正数)
  • 反码:1110 1111 0001 1110 (除符号位外各个位取反)
  • 补码:1110 1111 0001 1111 (反码加一)

其在计算机中存储形式为补码 1110 1111 0001 1111 ,当将其解释为无符号数时就是数字 61215

程序验证

int main(int argc, char *argv[])
{
    short x = -4321; /* 占用 2 个字节 */
    unsigned short y = (unsigned short)x;
    printf("%d %d\r\n", x, y); /* -4321 61215 */ 

    return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

长整数变短整数

长整数变短整数,高位截断,低位保留

程序验证

int main(int argc, char *argv[])
{
    int a = 165537; /* int 占用 4 个字节 0x000286a1 */
    int b = -34991; /* int 占用 4 个字节 0xffff7751 */

    short c = (short)a; /* short 占用 2 个字节 0x86a1 */
    short d = (short)b; /* short 占用 2 个字节 0x7751 */

    /* 可以对 short 类型使用 h 前缀 */
    printf("0x%08x 0x%08x 0x%04hx 0x%04hx\r\n", a, b, c, d); /* 0x000286a1 0xffff7751 0x86a1 0x7751 */
    printf("%d %d %hd %hd\r\n", a, b, c, d);                 /* 165537 -34991 -31071 30545 */

    return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

短整数变长整数

短整数变长整数,符号扩展

-4321 补码为:1110 1111 0001 11110xef1f,对其进行符号扩展的补码为 1111 1111 1111 1111 1110 1111 0001 11110xffffef1f

程序验证

int main(int argc, char *argv[])
{
    short a = -4321;                     /* 补码:1110 1111 0001 1111 */
    int m = a;       /* 补码:1111 1111 1111 1111 1110 1111 0001 1111 */
    printf("0x%04hx 0x%08x\r\n", a, m);
    printf("%d %d\r\n", a, m);

    unsigned short n = (unsigned short)a; /* 补码:1110 1111 0001 1111 的真值为 61215 */
    unsigned int p = n; /* p 的 补码为 0000 0000 0000 0000 1110 1111 0001 1111 */
    printf("0x%04hx 0x%08x\r\n", n, p); /* 0xef1f 0x0000ef1f */
    printf("%d %d\r\n", n, p); /* 61215 61215 */

    return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/272294
推荐阅读
相关标签
  

闽ICP备14008679号