02==C语言(数据类型,进制转换,三码)
2015-08-18 21:54
246 查看
Day 2
1:CMD + N
新建文件.
2:CMD + shift + N新建工程.
3:CMD + O
打开
第一个C语言(无参形式)
#include <stdio.h>
int main()
{
printf("hello world~\n");
printf("千锋\n");
printf("today is %d-%d-%d\n",2015,8,18);
return 0 ;
}
1:#include预编译指令(就是把查找的文件放到文件里)
2:stdio.h
文件名
3:< >从系统目录里查找包含的头文件
4:“”表示先从用户目录里查找,找不到再从系统目录里查找.在编辑中优先使用<>,提高程序运行效率
5:main函数是用户程序和操作系统的接口,运行时从main函数开始运行.main函数结束,用户程序结束.main函数有且只能有一个.
6:return
是函数返回,生命终止.
7:{ } :表示代码块
8:C语言中语句以 ; 结尾
9:C语言的基本组成是函数.每个程序至少有一个或多个函数
10:程序执行顺序:
编辑.c—>预编译.c—>编译.o—>链接.out—>执行
11:printf为系统打印函数
12:printf(“格式化字符串”,参数列表);
13:‘\n’为换行符
14:%d 叫做占位符,打印整数,占位符和参数个数要严格一致.
数据类型
基本数据类型
整型,浮点型,字符型
1:整型char . short . int . long . long long 在内存中占有的字节数不同,可以用sizeof(类型或者表达式)求出所占字节数.
所有字节数遵循short <= int <= long <= long long
2:占有的字节数不同,比特数不同,能表示不同的范围
char 1字节,8bit
无符号数,0~255
有符号数,-128~127
求范围: int a = 1111,1111
printf(“%d”,a);
统一种数据类型,有无符号占有的字节数是一样的.
short 2字节,16bit
无符号数,0~65535 0~2^32-1
有符号数.-32768~32767 -2^15~2^15-1
求范围: int a = 0xffff;
printf(“%d”,a);
int 4字节,32bit
无符号数,0~2^32-1
有符号数.-2^63~2^63-1
求范围: unsigned long b = 0xffffffff
printf(“b=%lu”,b);
long , long long 8字节,64bit
无符号数,0~2^64-1
有符号数,-2^63~2^63-1
3:浮点型也叫实型
float 单精度浮点数
double 双精度浮点数
符号位 + 尾数 + 指数 分开储存
4:字符型
字符在内存中以ASCII储存
char -128~127
字符串
多个字符在一起,一般存储在字符数组里
字符串以结束符作为结尾 结束符 = ‘\0’ = (ASCII)0
空格的ASCII = 32 = ‘ ‘
回车符ASCII = 10 = ‘\n’
5:类型数据的使用
常量:在运行过程中不能被改变的量,存储在只读区
整型常量 默认整型是int型
浮点型常量 默认浮点型是double 1,23f为float型常量
字符型常量 字符加单引号 ‘a’
字符串常量 字符串加双引号 “qianfeng”
变量:在运行中可以改变的量
标示符定义变量 其中标示符以字母,数字,下划线组成;但是以字母和下划线开始,而且不能是关键字
作用:就是给变量,函数…起个名字
变量命名:变量的类型 标示符; 尽量给变量取一个有意义的名字
建议命名方式
1:驼峰式 stuScore
2:下划线 stu_score
int main()
{
int stuScore = 10;//定义变量并且初始化
int stuAge ;//只定义没有初始化,里面的值是不确定的,不能直接使用-->变量必须先初始化后使用
printf("%d\n",stuScore);
printf("学生的年龄:%d\n",stuAge);
return 0;
}
6:输出打印
printf(“格式化字符串”,参数列表);
整型
char%d
short%d/%hd
int%d
long%ld
long long%lld
unsigned char%u
unsigned short%u
unsignedint
%u
unsigned long%lu
unsigned long long%llu
浮点型
float%f
double%lf/%f
字符型
char%c
char[] 字符串%s
7:输入问题
scanf(“格式化字符串”,参数地址列表)
占位符和printf完全一致
&取地址符, &a 表示变量a的地址 其中数组类型的类型名即为地址,不必要加取地址符
例如 char str[50];
printf(“请输入字符串”);
scanf(“%s”,str);
printf(“%s”,str);
进制问题
进制:进位方式
十进制:10个基本状态,0~9.逢10进1.每一位的权值10^(n-1)
二进制:2个基本状态,0~1.逢二进一.权值是2^(n-1)
前缀是0b
例如0b1011=11(为十进制)
进制转换
10进制转10进制
1024 = 1024(1*1000+2*10+4*1 -->拆成10的次方)
除10取余
1024
102 4
10 2
1 0
0 1 -->商是0的时候结束
10进制转二进制
17 = 16 + 1 = 2^4 + 2^0 = 0b10001
17
8 1
4 0
2 0
1 0
0 1 -->商是0的时候结束
练习 86转2进制
86 = 0b1010110
43 0
21 1
10 1
5 0
2 1
1 0
0 1 -->商是0的时候结束
2进制转10进制 权值相加
0b10001 = 1*2^0 + 1*2^4
8进制和16进制. 2进制的辅助进制,解决2进制太长的缺点.
8进制: 8个基本状态,从0~7.逢8进1.权值8^(n-1)
前缀加0
0123 = 1*8^2 + 2*8 + 3 = 83
一个8进制的数可以用3位二进制来表示.3位二进制可以表示一个8进制位
0b10001 = 0b010,001 = 021
0b1010110 = 0b001,010,110 = 0126 = 1*8^2 + 2*8^1 + 6*8^0 = 86
8进制转2进制就是把每个为拆分成3个二进制位.
16进制: 16个基本状态,从0~9,a~f.逢16进1.权值16^(n-1)
前缀0x
一个16进制位可以用4位二进制位来表示
4位二进制位可以表示1位16进制位
0x23 = 2*16 + 3 =35
0x23 = 0b0010,0011 = 1*2^5 + 1*2^1 + 1*2^0 = 35
0b0010,0011 = 0x23
X进制:X个状态,从0~X-1.逢X进1.权值X^(n-1)
10,2,8,16进制的相互转换
10进制-->(除16取余)16进制-->(1位展开成4位)2进制-->(3位压缩为1位)8进制
8进制-->(1位展开为3位)2进制-->(4位压缩成1位)16进制-->(权值相加)10进制
*/
//%d打印10进制
//%o打印8进制
//%x打印16进制
//在打印的时候要在前面自己加上前缀
/*
计算机中怎么储存
三码
假设是8位二进制表示一个数 一共可以表示256个不同的数
符号位:
数据的最高位置为符号位,1表示负数,0表示正数
原码:
数据的二进制形式
9 :原码0000,1001(最高位为符号位,剩下7位为数据位)
-3:原码1000,0011
------------------
相加 1000,1100(-12的原码,所以原码不能参与运算)
反码
正数的反码=原码
负数的反码=符号位不变,数据位翻转
9 :原码0000,1001
反码:0000,1001
-3:原码1000,0011
反码:1111,1100
--------------------------------
相加:0000,0101(超过位溢出)(5的反码,反码也不能参与运算)
补码
正数的补码=原码
负数的补码=反码+1
9 :原码0000,1001
反码:0000,1001
补码:0000,1001
-3:原码1000,0011
反码:1111,1100
补码:1111,1101
----------------------------------------------
相加:0000,0110(6的补码,补码可以参与运算)
结论:补码可以参与运算
数据在计算机中以补码形式存储
练习:
-15-23
-15:原码1000,1111反码:1111,0000
补码:1111,0001
-23:原码1001,0111反码:1110,1000
补码:1110,1001
----------------------------------------------
相加:1101,1010(补码)
1101,1010(补码)-->1101,1001(反码)-->1010,0110(原码)
= -38
8bits来表示一个数
无符号数:0b0000,0000~0b1111,1111 0~2^8-1(0~255)
有符号数
正数:0b0000,0000~0b0111,1111 0~2^7-1(0~127)
负数:0b1000,0000~0b1111,1111 -128~-1(-2^7~-1)
0b1111,1111(补码)-->0b1111,1110(反码)-->0b1000,0001(-1的原码)
0b1000,0000(补码)-->0b1111,1111(反码)-->0b1000,0000(-128的原码 规定要求:最高位的1即表示符号位也表示数值位)
数据在内存中存储
单位:字节Byte
1字节: 8比特 bit
1Byte = 8bits
1KB = 1024 B
1MB = 1024 KB
1GB = 1024 MB
1TB = 1024 GB
1:CMD + N
新建文件.
2:CMD + shift + N新建工程.
3:CMD + O
打开
第一个C语言(无参形式)
#include <stdio.h>
int main()
{
printf("hello world~\n");
printf("千锋\n");
printf("today is %d-%d-%d\n",2015,8,18);
return 0 ;
}
1:#include预编译指令(就是把查找的文件放到文件里)
2:stdio.h
文件名
3:< >从系统目录里查找包含的头文件
4:“”表示先从用户目录里查找,找不到再从系统目录里查找.在编辑中优先使用<>,提高程序运行效率
5:main函数是用户程序和操作系统的接口,运行时从main函数开始运行.main函数结束,用户程序结束.main函数有且只能有一个.
6:return
是函数返回,生命终止.
7:{ } :表示代码块
8:C语言中语句以 ; 结尾
9:C语言的基本组成是函数.每个程序至少有一个或多个函数
10:程序执行顺序:
编辑.c—>预编译.c—>编译.o—>链接.out—>执行
11:printf为系统打印函数
12:printf(“格式化字符串”,参数列表);
13:‘\n’为换行符
14:%d 叫做占位符,打印整数,占位符和参数个数要严格一致.
数据类型
基本数据类型
整型,浮点型,字符型
1:整型char . short . int . long . long long 在内存中占有的字节数不同,可以用sizeof(类型或者表达式)求出所占字节数.
所有字节数遵循short <= int <= long <= long long
2:占有的字节数不同,比特数不同,能表示不同的范围
char 1字节,8bit
无符号数,0~255
有符号数,-128~127
求范围: int a = 1111,1111
printf(“%d”,a);
统一种数据类型,有无符号占有的字节数是一样的.
short 2字节,16bit
无符号数,0~65535 0~2^32-1
有符号数.-32768~32767 -2^15~2^15-1
求范围: int a = 0xffff;
printf(“%d”,a);
int 4字节,32bit
无符号数,0~2^32-1
有符号数.-2^63~2^63-1
求范围: unsigned long b = 0xffffffff
printf(“b=%lu”,b);
long , long long 8字节,64bit
无符号数,0~2^64-1
有符号数,-2^63~2^63-1
3:浮点型也叫实型
float 单精度浮点数
double 双精度浮点数
符号位 + 尾数 + 指数 分开储存
4:字符型
字符在内存中以ASCII储存
char -128~127
字符串
多个字符在一起,一般存储在字符数组里
字符串以结束符作为结尾 结束符 = ‘\0’ = (ASCII)0
空格的ASCII = 32 = ‘ ‘
回车符ASCII = 10 = ‘\n’
5:类型数据的使用
常量:在运行过程中不能被改变的量,存储在只读区
整型常量 默认整型是int型
浮点型常量 默认浮点型是double 1,23f为float型常量
字符型常量 字符加单引号 ‘a’
字符串常量 字符串加双引号 “qianfeng”
变量:在运行中可以改变的量
标示符定义变量 其中标示符以字母,数字,下划线组成;但是以字母和下划线开始,而且不能是关键字
作用:就是给变量,函数…起个名字
变量命名:变量的类型 标示符; 尽量给变量取一个有意义的名字
建议命名方式
1:驼峰式 stuScore
2:下划线 stu_score
int main()
{
int stuScore = 10;//定义变量并且初始化
int stuAge ;//只定义没有初始化,里面的值是不确定的,不能直接使用-->变量必须先初始化后使用
printf("%d\n",stuScore);
printf("学生的年龄:%d\n",stuAge);
return 0;
}
6:输出打印
printf(“格式化字符串”,参数列表);
整型
char%d
short%d/%hd
int%d
long%ld
long long%lld
unsigned char%u
unsigned short%u
unsignedint
%u
unsigned long%lu
unsigned long long%llu
浮点型
float%f
double%lf/%f
字符型
char%c
char[] 字符串%s
7:输入问题
scanf(“格式化字符串”,参数地址列表)
占位符和printf完全一致
&取地址符, &a 表示变量a的地址 其中数组类型的类型名即为地址,不必要加取地址符
例如 char str[50];
printf(“请输入字符串”);
scanf(“%s”,str);
printf(“%s”,str);
进制问题
进制:进位方式
十进制:10个基本状态,0~9.逢10进1.每一位的权值10^(n-1)
二进制:2个基本状态,0~1.逢二进一.权值是2^(n-1)
前缀是0b
例如0b1011=11(为十进制)
进制转换
10进制转10进制
1024 = 1024(1*1000+2*10+4*1 -->拆成10的次方)
除10取余
1024
102 4
10 2
1 0
0 1 -->商是0的时候结束
10进制转二进制
17 = 16 + 1 = 2^4 + 2^0 = 0b10001
17
8 1
4 0
2 0
1 0
0 1 -->商是0的时候结束
练习 86转2进制
86 = 0b1010110
43 0
21 1
10 1
5 0
2 1
1 0
0 1 -->商是0的时候结束
2进制转10进制 权值相加
0b10001 = 1*2^0 + 1*2^4
8进制和16进制. 2进制的辅助进制,解决2进制太长的缺点.
8进制: 8个基本状态,从0~7.逢8进1.权值8^(n-1)
前缀加0
0123 = 1*8^2 + 2*8 + 3 = 83
一个8进制的数可以用3位二进制来表示.3位二进制可以表示一个8进制位
0b10001 = 0b010,001 = 021
0b1010110 = 0b001,010,110 = 0126 = 1*8^2 + 2*8^1 + 6*8^0 = 86
8进制转2进制就是把每个为拆分成3个二进制位.
16进制: 16个基本状态,从0~9,a~f.逢16进1.权值16^(n-1)
前缀0x
一个16进制位可以用4位二进制位来表示
4位二进制位可以表示1位16进制位
0x23 = 2*16 + 3 =35
0x23 = 0b0010,0011 = 1*2^5 + 1*2^1 + 1*2^0 = 35
0b0010,0011 = 0x23
X进制:X个状态,从0~X-1.逢X进1.权值X^(n-1)
10,2,8,16进制的相互转换
10进制-->(除16取余)16进制-->(1位展开成4位)2进制-->(3位压缩为1位)8进制
8进制-->(1位展开为3位)2进制-->(4位压缩成1位)16进制-->(权值相加)10进制
*/
//%d打印10进制
//%o打印8进制
//%x打印16进制
//在打印的时候要在前面自己加上前缀
/*
计算机中怎么储存
三码
假设是8位二进制表示一个数 一共可以表示256个不同的数
符号位:
数据的最高位置为符号位,1表示负数,0表示正数
原码:
数据的二进制形式
9 :原码0000,1001(最高位为符号位,剩下7位为数据位)
-3:原码1000,0011
------------------
相加 1000,1100(-12的原码,所以原码不能参与运算)
反码
正数的反码=原码
负数的反码=符号位不变,数据位翻转
9 :原码0000,1001
反码:0000,1001
-3:原码1000,0011
反码:1111,1100
--------------------------------
相加:0000,0101(超过位溢出)(5的反码,反码也不能参与运算)
补码
正数的补码=原码
负数的补码=反码+1
9 :原码0000,1001
反码:0000,1001
补码:0000,1001
-3:原码1000,0011
反码:1111,1100
补码:1111,1101
----------------------------------------------
相加:0000,0110(6的补码,补码可以参与运算)
结论:补码可以参与运算
数据在计算机中以补码形式存储
练习:
-15-23
-15:原码1000,1111反码:1111,0000
补码:1111,0001
-23:原码1001,0111反码:1110,1000
补码:1110,1001
----------------------------------------------
相加:1101,1010(补码)
1101,1010(补码)-->1101,1001(反码)-->1010,0110(原码)
= -38
8bits来表示一个数
无符号数:0b0000,0000~0b1111,1111 0~2^8-1(0~255)
有符号数
正数:0b0000,0000~0b0111,1111 0~2^7-1(0~127)
负数:0b1000,0000~0b1111,1111 -128~-1(-2^7~-1)
0b1111,1111(补码)-->0b1111,1110(反码)-->0b1000,0001(-1的原码)
0b1000,0000(补码)-->0b1111,1111(反码)-->0b1000,0000(-128的原码 规定要求:最高位的1即表示符号位也表示数值位)
数据在内存中存储
单位:字节Byte
1字节: 8比特 bit
1Byte = 8bits
1KB = 1024 B
1MB = 1024 KB
1GB = 1024 MB
1TB = 1024 GB
相关文章推荐
- MySQL中的integer 数据类型
- MySQL 数据类型
- PostgreSQL教程(四):数据类型详解
- Lua学习笔记之数据类型
- 实现Lua中数据类型的源码分享
- Lua和C语言的交互详解
- Lua数据类型介绍
- SQL 研究 相似的数据类型
- 详解SQLite中的数据类型
- PowerShell中使用GetType获取变量数据类型
- c# 数据类型占用的字节数介绍
- C#难点逐个击破(6):C#数据类型与.net framework数据类型
- C#、ASP.NET通用工具类IsWhat?(可以判断数字、身份证、数据类型等等)
- 关于C语言中参数的传值问题
- 深入C++中API的问题详解
- 基于C语言string函数的详解
- C语言内存对齐实例详解
- c语言实现的带通配符匹配算法
- C语言实现顺序表基本操作汇总
- MySQL数据类型和常用字段属性总结