您的位置:首页 > 编程语言 > C语言/C++

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息