C语言中printf("%u")表示按无符号数形式输出一个整数。
现在的机器一般为32位或64位机,整数存储占4个字节,一个字节8位,共计32位。
整数在计算机中以补码形式存储,-1的补码为32个1组成的二进制数,按无符号数输出这个二进制数,就是2^32-1=4294967295
由于采用补码表示整数,计算机本身不关心整数是正数还是负数,统一按无符号数对待。具体输出时,显示为什么数,计算机按编程者的格式要求进行处理输出。如32个1组成的二进制数,按%d输出就是-1,按无符号输出就是4294967295。
在计算机中,可以区分正负的类型,称为有符号类型(signed),无正负区分的类型,称为无符号类型(unsigned)。有符号类型数据的最高位表示符号,1表示正,0表示负。
【 signed 】 int signed关键字常省略不写
取值范围:-2147483648~2147483647
unsigned int
取值范围:0~4294967295
【 signed 】 char
取值范围:-128~127
unsigned char
取值范围:0~255
![](http://imgsrc.baidu.com/forum/w%3D580/sign=8b50da34bd7eca80120539efa1239712/69890ae83901213f814f32cb59e736d12e2e95c7.jpg)
现在的机器一般为32位或64位机,整数存储占4个字节,一个字节8位,共计32位。
整数在计算机中以补码形式存储,-1的补码为32个1组成的二进制数,按无符号数输出这个二进制数,就是2^32-1=4294967295
由于采用补码表示整数,计算机本身不关心整数是正数还是负数,统一按无符号数对待。具体输出时,显示为什么数,计算机按编程者的格式要求进行处理输出。如32个1组成的二进制数,按%d输出就是-1,按无符号输出就是4294967295。
在计算机中,可以区分正负的类型,称为有符号类型(signed),无正负区分的类型,称为无符号类型(unsigned)。有符号类型数据的最高位表示符号,1表示正,0表示负。
【 signed 】 int signed关键字常省略不写
取值范围:-2147483648~2147483647
unsigned int
取值范围:0~4294967295
【 signed 】 char
取值范围:-128~127
unsigned char
取值范围:0~255
![](http://imgsrc.baidu.com/forum/w%3D580/sign=8b50da34bd7eca80120539efa1239712/69890ae83901213f814f32cb59e736d12e2e95c7.jpg)