9是c语言里的十进制码,02==C语言(数据类型,进制转换,三码)

Day 2

1:CMD + N 新建文件.

2:CMD + shift + N新建工程.

3:CMD + O 打开

第一个C语言(无参形式)

#include

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

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值