第四天

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 0
1 1
2 10
3 11
4 100
5 101
6 110
7 111
10 1000

计算器 》程序员 》由上到下 HEX 16进制 DEC 10进制 OCT八进制 BIN二进制

 


进制在程序中打印:
int a=10; //十进制中的10
int b=010;//八进制中的10 咋程序中定义一个八进制数需要在书前面加上0
int c=0x10;//十六进制中的10 在程序中定义一个十六进制需要在数前面加上0x区分
int d =0X10;//十六进制中的10在程序中定义一个十六进制的数需要在前面加上0X区分
注意:在程序中没有办法表示一个二进制数
%d将数据按照十进制输出
%o将数据按照八进制输出
%x将数据按照十六进制小写输出
%X将数据按照十六进制大写输出

讲一个有符号的整形数据 可以分为两部分 一部分是符号位 一部分是数字位、
无符号数据类型只包含数字部位
signeg int a = 1986(有符号的标识signed可以不用写)
11111000010
10
1010
-1986
1int a =1986;
1986的原码:0000 0000 0000 0000 0000 0111 1100 0010
-1986的原码:1000 0000 0000 0000 0000 0111 1100 0010

1986的反码: 0000 0000 0000 0000 0000 0111 1100 0010
-1986的反码:1111 1111 1111 1111 1111 1000 0011 1101

1986的补码: 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 1010
0001 0100
0001 1110

-10 + -20
原码:1000 1010
反码:1111 0101
补码:1111 0110

原码:1001 0100
反码:1110 1011
补码:1110 1100

1111 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 1001
4、将反码+1转化为补码
1987:0000 0000 0000 0000 0000 0111 1100 0011
-236:1111 11111111 1111 1111 1110 1011 1010
5、计算补码
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 =-0

4.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 1111
0000 0010
1000 0001

posted @ 2019-04-11 19:30  做你の至尊宝  阅读(89)  评论(0编辑  收藏  举报