在C语言中一个整型常量后面加上一个字符u,则认为该数为unsigned int 型 如12345u表示无符号整数12345,如果写成-12345u 则先将-12345转换成补码53191 然后按照无符号数存储 后面的转码怎么转的?

来源:学生作业帮助网 编辑:六六作业网 时间:2024/12/27 05:41:02
在C语言中一个整型常量后面加上一个字符u,则认为该数为unsignedint型如12345u表示无符号整数12345,如果写成-12345u则先将-12345转换成补码53191然后按照无符号数存储后

在C语言中一个整型常量后面加上一个字符u,则认为该数为unsigned int 型 如12345u表示无符号整数12345,如果写成-12345u 则先将-12345转换成补码53191 然后按照无符号数存储 后面的转码怎么转的?
在C语言中一个整型常量后面加上一个字符u,则认为该数为unsigned int 型 如12345u表示无符号整数12345,
如果写成-12345u 则先将-12345转换成补码53191 然后按照无符号数存储 后面的转码怎么转的?

在C语言中一个整型常量后面加上一个字符u,则认为该数为unsigned int 型 如12345u表示无符号整数12345,如果写成-12345u 则先将-12345转换成补码53191 然后按照无符号数存储 后面的转码怎么转的?
计算机中存的数全是按补码保存的,所以解释问题,需先解释补码的意义:
一、一个int类型数据在计算机中占四个字节(32bits),有符号数第一位是符号位,0表示正数,1表示负数.无符号数是将符号位也算作数值来计算.
二、计算机中有原码、反码、补码的概念,其定义为:
原码:第一位为符号位,其余位为数的二进制 如:+10=0 .1010B ,-10=1.1010B(.表示多个0,总共32bits)
反码:正数反码同原码,负数的反码为:符号位不变,其余位按位取反,即:0变1,1变0,如:
+10(反)==0 .1010B -10(反)=1111.0101B
补码:正数补码同原码,负数的补码为:反码+1,如:
+10(补)==0 .1010B -10(补)=1111.0110B
三、-12345的存储
-12345原=1000 0000 0000 0000 0011 0000 0011 1001B
-12345反=1111 1111 1111 1111 1100 1111 1100 0110B
-12345补=1111 1111 1111 1111 1100 1111 1100 0111B
四、解读-12345u
1111 1111 1111 1111 1100 1111 1100 0111B按无符号数解读为:4294954951