C short类型的内存分析

#include<stdio.h>
#include<limits.h>
void main(){

	//printf("short%d, int%d, long%d ", sizeof(short), sizeof(int), sizeof(long));
	//32位,64位系统int和long是等价的,都是4个字节
	//short只有2个字节,一般在内存资源不够的情况下使用,比如嵌入式开发

	short shMax = SHRT_MAX;
	short shMin = SHRT_MIN;
	printf("shMAX is %d, shMin is %d \n", shMax, shMin);

	unsigned short ushMax = USHRT_MAX;
	//  unsigned short ushMin = USHRT_MIN;  无符号的short最小值 是0
	printf("ushMAX is %d, ", ushMax);

	// short的内存分析
	//short 2个字节   16个1  1111 1111 1111 1111   第一位的1代表符号位,0是正数,1是负数, 有效数据位是15位
	//usigned short 2个字节   16个1  1111 1111 1111 1111   有效数据位是16位
	// 结论:同样16个1,在不同的解析下,表示的意义完全不一样

	short x = -1;
	printf("the address of x is %x", &x);
	//-1的原码是  1000 0000 0000 0001
	//-1的反码是  1111 1111 1111 1110
	//-1的补码是  1111 1111 1111 1111  
	// 16进制:   f      f    f   f    内存中表示的数

	getchar();
}

猜你喜欢

转载自www.cnblogs.com/luoxuw/p/11220139.html