1、数据类型的定义
变量的定义 数据类型 变量名{标识符} 变量的赋值 变量名 = 值; 数据类型 变量名{标识符} = 值标识符的命名规则:1、字母 数字, 下划线2、不能以数字开头3、见名知义 4、不能重复命名定义5、不能使用C语言关键字常量的定义
const 数据类型 常量名#define 常量名 值注意:1、通过#define定义的常量是更具值来匹配数据类型的2、const 修饰常量是不安全的可以通过指针修改进制
二进制 缝二进一 0 1 、10 11 100 十进制 转二进制除二反序 取余法 :将十进制每次除以二 去除余数 单数 1 双数0 按照结果倒叙 排列二进制转化十进制
全职发:将二进制的各个位数从0位开始乘以二的N次幂 得到的结果相加八进制
八进制是逢八进一。所有的数组都是0到7组成 除八反序取余发: 将十进制数每次除以八 取余数 案结果倒叙排列八进制转化十进制权值法八进制转化二进制
8421法则:参照表:八进制 二进制0 01 12 103 114 1005 1016 1107 11110 1000计算器 》程序员 》由上到下 HEX 16进制 DEC 10进制 OCT八进制 BIN二进制
进制在程序中打印:int a=10; //十进制中的10int b=010;//八进制中的10 咋程序中定义一个八进制数需要在书前面加上0int c=0x10;//十六进制中的10 在程序中定义一个十六进制需要在数前面加上0x区分int d =0X10;//十六进制中的10在程序中定义一个十六进制的数需要在前面加上0X区分注意:在程序中没有办法表示一个二进制数%d将数据按照十进制输出%o将数据按照八进制输出%x将数据按照十六进制小写输出%X将数据按照十六进制大写输出
讲一个有符号的整形数据 可以分为两部分 一部分是符号位 一部分是数字位、
无符号数据类型只包含数字部位 signeg int a = 1986(有符号的标识signed可以不用写)11111000010101010-19861int a =1986;1986的原码:0000 0000 0000 0000 0000 0111 1100 0010-1986的原码:1000 0000 0000 0000 0000 0111 1100 00101986的反码: 0000 0000 0000 0000 0000 0111 1100 0010
-1986的反码:1111 1111 1111 1111 1111 1000 0011 11011986的补码: 0000 0000 0000 0000 0000 0111 1100 0010
-1986的补码:1111 1111 1111 1111 1111 1000 0011 1101 1 0000 0000 0000 0000 0000 0000 0000 0000溢出: 在数据进行操作的时候会导致 超出数据类型大小,会向前位进1操作多余原始数据类型大小,会被系统自动舍弃保留从后面开始数据类型大小的位数
10 + 20
0000 10100001 01000001 1110-10 + -20
原码:1000 1010反码:1111 0101补码:1111 0110原码:1001 0100
反码:1110 1011补码:1110 11001111 0110
1110 1100 1110 0010 补码 11110 0001 反码 1001 1110 原码 16+8+4+2=-30练习:用生日1987 -326 1将10进制转化为2进制 1987:0000 0000 0000 0000 0000 0111 1100 0011 -236:0000 0000 0000 0000 0000 0001 0100 0110 2、加符号将数据变为原码 1987:0000 0000 0000 0000 0000 0111 1100 0011 -236: 1000 0000 0000 0000 0000 0001 0100 0110 3、 转化为反码1987:0000 0000 0000 0000 0000 0111 1100 0011-236:1111 11111111 1111 1111 1110 1011 10014、将反码+1转化为补码1987:0000 0000 0000 0000 0000 0111 1100 0011-236:1111 11111111 1111 1111 1110 1011 10105、计算补码1987:0000 0000 0000 0000 0000 0111 1100 0011-236:1111 11111111 1111 1111 1110 1011 1010结果:1 0000 0000 0000 0000 0000 00001000 0010、将数据转化为10进制
无符号unsigned int a = 1986无符号:1111 1111 1111 1111 1111 1111 1111 1111取值:0-4294967295(2^32-1)有符号
int a= 1986 0111 1111 1111 1111 1111 1111 1111 1111=2147483647 原码:1111 1111 1111 1111 1111 1111 1111 1111=-2147483647 反码:1000 0000 0000 0000 0000 0000 0000 0000 补吗:1000 0000 0000 0000 0000 0000 0000 0000 =-04.sizeof()注意:根据32位操作系统获取的
求出数据类型在内存中站的大小(byte) int valuo =sizeof(变量名) int value = sizeof(数据类型);sizeof 数据类型char(字符型)< short (短整型)2字节< =int(整型)4字节|float(单精度浮点型)|long(长整型)8 字节|long long(长长整型)|double(双精度浮点型) 输出和输入输出字符的两种方式1 printf(“%c”,变量)2 putchar(字符)输入字符的方式1 scanf(“%c”,&b变量)2 getcchar(字符)char 1B =8 bit
0x7f
0111 11110000 0010 1000 0001