永发信息网

无符号数和有符号数的转化

答案:4  悬赏:70  手机版
解决时间 2021-12-22 05:36
  • 提问者网友:轻浮
  • 2021-12-21 16:22
下面的代码输出是什么,为什么?
void foo(void)
{
unsigned int a = 6;
int b = -20;
(a+b > 6) ? puts("> 6") : puts("<= 6");
结果是多少?
int b是unsingned int 还是signed int (我认为默认情况应该是无符号数)
}
最佳答案
  • 五星知识达人网友:西岸风
  • 2021-12-21 17:12
语言有符号数与无符号数之间的转换:

无符号数:不存在正负之分,所有位都用来表示数的本身。

有符号数:最高位用来表示数的正负,最高位为1则表示负数,最高位为0则表示正数。

1. 无符号数转换为有符号数:看无符号数的最高位是否为1,如果不为1(即为0),则有符号数就直接等于无符号数;
2.如果无符号数的最高位为1,则将无符号数取补码,得到的数就是有符号数。

3..有符号数转换为无符号数 :看有符号数的最高位是否为1,如果不为1(即为0),则无符号数就直接等于有符号数;
4.如果有符号数的最高位为1,则将有符号数取补码,得到的数就是无符号数。
拓展资料:




1.有符号数是针对二进制来讲的。用最高位作为符号位,“0”代表“+”,“1”代表“-” ;其余数位用作数值位,代表数值。
2.有符号数的表示:计算机中的数据用二进制表示,数的符号也只能用0/1表示。一般用最高有效位(MSB)来表示数的符号,正数用0表示,负数用1表示。
3.有符号数的编码方式,常用的是补码,另外还有原码和反码等。用不同二进制编码方式表示有符号数时,所得到的机器数可能不一样,但是真值是相同的。
参考资料:百度百科_有符号数
全部回答
  • 1楼网友:梦中风几里
  • 2021-12-21 19:57
put"great six"
  • 2楼网友:鱼忧
  • 2021-12-21 19:44
unsingned int 优先级高 计算a+b会转化为unsingned int 输出是>6
  • 3楼网友:天凉才是好个秋
  • 2021-12-21 18:23
LZ要仔细看书 int就是有符号的 unsigned int才是无符号的 数据类型转换的原则及注意问题 一、两条自动转换原则和一条强制性转换原则。 设:x为短整型(2B),y单精度型(4B),z为字符型(1B)。 1、表达式计算中数据类型的自动转换原则 参加运算的各个数据都转换成长度最长的数据类型。结果为数据长度最长的数据类型。例如: ① x+y x先自动转换成单精度型,后计算x+y,结果为单精度型; ② x+z z先自动转换成短整型,后计算x+z,结果为短整型。 2、把运算结果赋给变量时数据类型的自动转换原则 先将运算结果的数据类型自动转换成变量的数据类型,然后赋给变量。例如: ① y=x+z x+z运算结果为短整型,自动转换成单精度型,再赋给变量 y. ② x=y+z y+z运算结果为单精度型,自动转换成短整型,再赋给变量 x. 3、运算结果的强制性数据类型转换原则 强制性数据类型转换格式:(数据类型符)(表达式) 先按自动转换原则计算表达式的值,后将其转换成指定的数据类型。 仅当表达式是单个常量或变量时,表达式括号可省略。例如: ①(float)x 对 x 的值强制转换成单精度; ②(float)x+m 先对 x 的值强制转换成单精度,后再和 m 进行加运算; ③(float)(x+m) 先计算(x+m),后把(x+m)的值强制转换成单精度。 二、类型转换的注意问题 1、表达式的类型转换是临时的,式中的常量或变量的原类型均不改变。 2、把运算结果赋给变量时,若运算结果的数据长度 > 变量的数据长度,会截去超长部分, 将可能导致精度降低或产生不确定的值。 3、类型转换占用系统时间,过多的转换会降低程序运行效率。除必要的外,应选择合适的数据类型。 main() { char a; int x; x=32767; /* x 的机内码 0语言有符号数与无符号数之间的转换: 无符号数:不存在正负之分,所有位都用来表示数的本身。 有符号数:最高位用来表示数的正负,最高位为1则表示负数,最高位为0则表示正数。 1 无符号数转换为有符号数 看无符号数的最高位是否为1,如果不为1(即为0),则有符号数就直接等于无符号数;如果无符号数的最高位为1,则将无符号数取补码,得到的数就是有符号数。 2 有符号数转换为无符号数 看有符号数的最高位是否为1,如果不为1(即为0),则无符号数就直接等于有符号数;如果有符号数的最高位为1,则将有符号数取补码,得到的数就是无符号数。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯