unsigned char 无符号的数(类似身高等无正负之分)
short=signed short 默认有符号
对于整型:数据存放内存的是补码
之所以用补码存储
001 1
1001 -1
100010 -2
原码得出的是-2,不是0
若是补码
001
11111
10000 32位整型,结果为0
转换规则
补码-1取反得到原码
补码取反再加1得到原码
大小端介绍
一个数值超过1个字节,在内存中就有顺序问题
小端字节序存储:数据低位保存在内存低地址中(字节为单位)
eg: 0x112233344— —443322110x
-------------------低位 -低位----------高位
小端倒着放常见于pc x86中,联想鸡蛋大小端点理解
注意
1.内存中存放的是补码
2.整形表达式计算时候用补码计算
3.打印和看到的时候都是原码
判断大小端
int check_sys()
{
int a=1;
return (char)&a;
}
int check_sys()
{
int a=1;
return *(char*)&a;
}
char 只取一个字节
char* 强制类型转换
&a 这里本身是int*类型的
signed short 取值范围-32768~32767
unsigned short 取值范围0~65535
.-----------------------------10000~011111
eg:
signed char b=-1;
unsigned char c=-1;
printf(“%d,%d”,b,c);
.=------- -1 ,255