zl程序教程

您现在的位置是:首页 >  其他

当前栏目

06-8位补码转32位补码

2023-04-18 15:03:16 时间

问题

1

#include <stdio.h>

int main()
{
        
        char ch = 0x81; // 补码--1000 0001
        printf("%d
",ch); //    1111 1110 --> 1111 1111 -127 方法有误
        /*
          将8位补码转为32位补码,再转为32位原码进行打印
          8位补码-->32补码:
            8位补码-->8位原码-->32位原码-->32补码-->32原码
            8位原码 1111 1111
            32位原码 符号位不变 1000 0000 0000 0000 0000 0000 0111 1111     -127
            32位反码           1111 1111 1111 1111 1111 1111 100000000
            3位补码            1111 1111 1111 1111 1111 1111 100000001     无符号打印打印的是这个数
          8位补码转32位补码:8位补码最高位为1,扩展的时候一直补1,最高位为0,扩展的时候一直补0
        */    

        printf("%u
",ch); //4294967169
        
        system("pause");
        return 0;
}
  • %d 32位有符号十进制
  • %u 32位无符号十进制
  • %x 32位十六进制