return1在c语言中是什么意思 1在c语言中是什么意思

C语言支持多种整型数据类型来表示有限范围的整数 。每种类型都能用关键字来指定大小,这些关键字包括char、short、long,同时还可以指示被表示的数字是非负数(声明为unsigned)、或者可能是负数(默认) 。另外,为这些不同的大小分配的字节数根据程序编译为 32 位还是 64 位而有所不同 。

return1在c语言中是什么意思  1在c语言中是什么意思

文章插图
long的大小与int一样大,属于历史遗留问题,历史上的int在16位平台时代是2个字节,long是4个字节,所以long要long,等到32位平台将int提升到32位一个字长时,int和long的长度就一样 。
不同word size对应的最值的16进制编码(其中的U表示Unsigned,T表示Two's comlement(补码)):
return1在c语言中是什么意思  1在c语言中是什么意思

文章插图
注意上面的16进制与二进制的对应关系:
7:0111
8:1000
F:1111
可以看出有以下数量关系:


1 无符号数编码假设有一个整数数据类型,有位(word size or width) 。将其写成向量,将其视为二进制表示的无符号数,则每一位取值范围为0或1 。
用函数(Binary to Unsigned的缩写,长度为)表示为:
函数将一个长度为w 的0、1 串映射到非负整数 。
例:
return1在c语言中是什么意思  1在c语言中是什么意思

文章插图
可以用长度为的指向右侧箭头的条表示每个位的位置 i 。每个位向量对应的数值就等于所有值为 1 的位对应的条的长度之和 。
return1在c语言中是什么意思  1在c语言中是什么意思

文章插图

w位二进制所能表示的无符号整数的范围:
2 有符号整型数据的补码编码目前,最常见的计算机有符号整型数的计算机表示方式为补码形式 。在补码中,将字的更高有效位解释为负权(negative weight) 。这里通过函数 B2T_w(Binary to Two's-complement的缩写)来表示:
例:
return1在c语言中是什么意思  1在c语言中是什么意思

文章插图
更高有效位也称为符号位,它的“权重”为,是无符号表示中权重的负数 。符号位被设置为1 时,表示值为负,而当设置为0 时,值为非负 。
补码 + 它的负数 = 模;
补码和它的负数的二进制位只有更低位是相同的,其它位都是相补:
补码 && 它的负数 = 1;
这也是经常有以下表述的来由:
对于负数,补码等于反码+1 。
补码使用更高位表示符号,但与无符号整数编码表示的总体值域的个数是一致的: 。
我们用向左指的条表示符号位具有负权重 。于是,与一个位向量相关联的数值是由可能的向左指的条和向右指的条加起来决定的 。
return1在c语言中是什么意思  1在c语言中是什么意思

文章插图

更高位以外的其它位相对于更高位而言,是一个此涨彼消的状态 。
w位二进制所能表示的有符号整数的范围:

负整数的范围比正整数的范围大1,多出来的数就是100…000(二进制序列,最小的负数),该数取反加1等于模,截断后就是0了 。
3 有符号整数与无符号整数之间的转换C 语言允许在各种不同的数字数据类型之间做强制类型转换 。遵循底层的位表示不变,而按不同类型的编码规则进行解释的原则 。
如果是相关类型的隐式转换,C语言设置了一系列的转换规则 。
如果是不相关类型的强制转换,C语言会在位级层面按编码规则做重新解释(解码) 。
例如,假设变量x 声明为int,u 声明为unsigned,表达式(unsigned)x 会将x 的值转换成一个无符号数值,而(int)u 将u 的值转换成一个有符号整数 。将有符号数强制类型转换成无符号数 。另外,一个表达式中,如果同时存在无符号整数与有符号整数,计算时,有符号整数会隐式转换为无符号整数 。
对于有符号整数的正整数部分,与无符号整数是一致的 。
对于对于有符号整数的负整数部分,与无符号整数只有更高位的解释不同,其它位是一致的 。

return1在c语言中是什么意思  1在c语言中是什么意思

文章插图
所以有以下数量关系:
负整数x→U = x+
u→负整数x = U -
return1在c语言中是什么意思  1在c语言中是什么意思

文章插图
由于C 语言对同时包含有符号和无符号整型数表达式的隐式转换,会出现一些奇特的行为 。当执行一个运算时,如果它的一个运算数是有符号的而另一个是无符号的,那么C语言会隐式地将有符号整数强制类型转换为无符号数,并假设这两个数都是非负的,来执行这个运算 。就像我们将要看到的,这种 *** 对于标准的算术运算来说并无多大差异,但是对于像<和>这样的关系运算符来说,它会导致非直观的结果 。

推荐阅读