服装设计网站模板下载,网站收录查询入口,欧美一级A做爰片成电影网站,如何做色流量网站类型意义#xff1a; 1.类型决定内存空间大小#xff08;大小决定了使用范围#xff09; 2.如何看待内存空间的视角
类型分类 整形
类型大小(字节)short2int4long4long8 浮点型
类型大小(字节)float4double8long double12 构造类型
数组结构性struct联合union枚举enum 指…类型意义 1.类型决定内存空间大小大小决定了使用范围 2.如何看待内存空间的视角
类型分类 整形
类型大小(字节)short2int4long4long8 浮点型
类型大小(字节)float4double8long double12 构造类型
数组结构性struct联合union枚举enum 指针类型 空类型 void(表示空类型,无返回值)
原码、反码、补码 计算机中的整形有符号数表示方法为 原码,补码,反码. 均为符号位和数值位两部分,符号位都是用0表示正,用1表示负,首位为符号位 三种表示方法各不相同 无符号数 : 原码,反码,补码均相同. 计算机存储的是 补码(可以将符号位和数值域统一处理,加法和减法统一处理,因为cpu只有加法器), 反码补码-1,原码反码按位取反,特殊的补码 10000000,原码为 -128无符号类型 unsigned 有符号 signed 原码: 直接将二进制转按照正负数的形式 换为二进制就可以
反码 原原码符号位不变,其他位依次按位取反即可
补码 反码1即可· 比如 : int a20;// 4字节 32bit 原码: 00010100(8个数表示20, 前面再加24个0) 补码,反码与 原码相同 int b-10;//4字节 32bit 原码: 0000 1010(8个数表示10,前面加23个0,最前面符号位为1) 反码: 1111 0101(前面加23个1,最前面符号位为1) 补码: 1111(等于15) 0110(反码1) 转换16进制位(4个2进制位转换为1个16进制位) 补码转换16进制:0x ffffff6 大小端介绍
什么是大小端: 大端(存储): 指数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地址中 小端(存储): 指数据的低位保存在内存的低地址中,而数据的高位,保存在内存的高地址中 低地址: 编号小的 高地址 : 编号大的 如 0x 11 22 33 44 地址: 由低到高 数据: 由高到低 44为数据低位 , 11为数据高位 44为内存高地址 , 11为内存低地址 大端存储:11 22 33 44(人为) 小端存储:44 33 22 11(计算机) //判断当前字节序: //思路: 内存以16进制存储,如果第一个字节为 相对应16进制数,就为小端存储 ,否则为大端. //比如 int a 1; 16进制为 01 00 00 00 (小端) //利用 char* 来 访问一个字节的内容,指针类型决定访问几个字节的数. //代码如下:
int check()
{
int a1;
return *(char* )a;
// 取出a的地址,并把强制转换类型 为 char*(因为只需要访问字节),再解引用得到其中的数,并返回
}int main()
{
//返回1,小端
//返回0,大端int retcheck_sys();
if(ret1)
{printf(小端);
}
else
{
printf(大端);
}} 例题1:
main()
{//数都为 -1,没赋值前补码都一致char a -1;//原码:10000000000000000000000000000001//补码:11111111111111111111111111111111//输出为int.整形提升(按符号位补高位)//得补码:11111111111111111111111111111111(32)//为负数,原码输出还是 -1signed b -1;//和a同理unsigned c -1;//补码:111111111111111111111111 11111111//因为赋值类型为unsigned ,最高位为0,整形提升(按符号位补高位),//得新补码:0000000000000000000000 11111111(32)//此时为整数, 原反补码一致 为255printf(%d %d %d, a, b, c);}
例题2:
main(){//数都为 -1,没赋值前补码都一致char a -128;//原码:100000000000000000000000 10000000//补码:111111111111111111111111 10000000//因为赋值类型为char.认为1为符号位(按符号位补高位)//得新补码:111111111111111111111111 10000000(32)//%u打印 打印十进制无符号数., 原反补码一致 为111111111111111111111111 10000000printf(%u, a);} char 分析:
有符号 char范围 : -128------127
无符号 char范围: 0-------255
有符号字符类型范围图: 例题3:
main(){char a 128;printf(%u, a);char b - 128;printf(%u, b);
//输出一致
// a存不了128, 可以表示为 1271-128} 例题4:(无符号 与 有符号 计算) int i-20;
unsigned j10;
printf(%d,ij);//-20的 补码
11111111 11111111 11111111 11101100 //10的 补码
000000 0000000 0000000 00001010结果:
11111111 1111111 11111111 11111010 补码
11111111 1111111 11111111 11110110 反码
00000000 0000000 00000000 00001001 原码 -10 例题5: (-1 补码 与 无符号数)
unsigned int i;
for(i9;i0;i--)
{printf(%d,i)
}//无限循环//当循环到 -1 时,由于-1补码全为1, 赋值给i, i为 无符号数,修改最前面的1为0 ,将会变为一个超大的数.
例题6: (字符类型范围)
char a[1000];
int i;
for(i0;i1000;i)
{a[i] -1 - i;}
printf(%d, strlen(a));//参考上图 字符类型取值范围图,
//当-1,-2.....到-128是,下一个数 为127,126,125.....,知道0,停止存储.
//字符类型范围 -128到127例题7: unsigned char a[1000];int i;for(i0;i255;i){printf(hello);}//无符号数 取值范围 0-255 , 当i为2551 时, 将会变为 0,从而无限循环浮点 类型: 基础知识: 不带任何后缀的浮点型变量 默认double , 以f(F).l(L) 分别表示 float 和 long double float 表示 6个有效字符 , double 表示 15个 , long double 表示 18个. 浮点型 字面量,有且只有一个小数点,两侧至少一边有数字. 指数形式: e(E)为底 为 十进制指数 如:2.87e-3 , 以0x(0X)打头,p(P)分隔的 是以 2为底数的 16进制指数 如:0x2p316.0