您的位置首页生活百科

C语言的unsi的情盐供美gned int到底是什么意思

C语言的unsi的情盐供美gned int到底是什么意思

的有关信息介绍如下:

问题补充说明:搞清unsigned int底我做面程序同数字打进看输同效:#include "stdio.h"main(){ unsigned short a=32768; unsigned short b=32767; unsigned short c=32769; unsigned short d=-32768; unsigned short e=-32767; unsigned short f=-32769; unsigned short g=-1; unsigned short h=-2; unsigned short i=-3; printf("%d\n%d\n%d\n%d\n%d\n%d\n%d\n%d\n%d\n",a,b,c,d,e,f,g,h,i); getch();}运行结:327683276732769327683276932767655356553465533Press any key to continue没看规律请朋友解释谢谢

C语言的unsi的情盐供美gned int到底是什么意思

不管是unsigned还是signed,同类型宽度都是一样,short占2娘较字节共16个位,无符号可以完全利用这16个位来表示数字,就有2^16=65536中可能,可以表示0~65535,而有符号类型要用到最高位表示符号,2^15=32768,所以能表示-32768~32767,为了不出现两个0的情况,+0和-0,底层实现一来自般是用2的补码来表示负数,一个负数的二360问答进制表示,可以由这个负数的绝对值的二进制表现形式取反再加1得到,

比如16国守娘标排地按位short值-1,绝对值是1,二进刻旧西宁纸率把胜济代制表示为:

000000000边贵有那静原司扩字0000001

取反

11企11111111111110+1=

1111111111111111

而正好这个数也是无符号型最江矿元意协两鲜子大值65535的表现形式,所以对于这个二进制,是解释为65535还或敏裤是拿链-1,那就是printf里格式化的衫掌及按川宁行停溶握简功能了。