第一天学习c语言笔记

一、计算机数据表示

高 低

计算机 底层(硬件)描述的最小单位--比特 bite (0 1)--针对于硬件(如上网网速)

8bite--256种状态

 

计算机 底层(软件)把多个bite组合成一种对象 --字节 Byte--针对于软件(如存储)

8bite=1Byte(字节)=1B

 

CPU--一个个字节、一个个bite

人--一个个对象(高级语音)

容器--内存--进行管理

 

二、C语言基本数据类型

数据类型:在内存中分配容器的大小(高级语言内置容器大小为提供操作方便)

 

翻译官(编译器) 读取代码-------分析-------在内存上实现

  读取代码: 单词 标点符号

   int a =10;

int a;//声明 a表示int类型的数据类型(容器)--映射到一定大小的内存上

a =10;//使用

 

ISO C90

char short int long

char (1B)<short<=int(2B 4B)<=long(不能小于4B)

long long:一定表示8B

int:1、表示计算机CPU一个周期能处理的数据大小(与数据总线的位数有关)

 2、OS:表示编译器提供的总线容量(2B 4B)

不同操作系统数据类型大小不一致导致程序移植性差

解决方法:

1、sizeof():来计算数据类型在编译器中的大小;如sizeof(int)--(使用%zd输出--针对sizeof制定)

2、数据类型进行重命名--typedef(数据类型起别名)

如:typedef int int8-t;定义一个叫做int8-t的int类型的别名

使用头文件stdint<stdint.h>已完成定义

OS:int--2B typedef int16-t int;

 long--4B typedef int32-t long;

OS:int--4B typedef int16-t short;

 long--4B typedef int32-t int;

 

三、进制转换

数据-->数字 字符

十进制-->二进制使用8421码直接转

6=4+2=0100+0010=0110

100=64+32+4=0100 0000+0010 0000+0000 0100=0110 0100

 

二进制-->八进制

3个二进制==1个八进制

100==0110 0100=001 100 100=1 4 4

十进制 二进制 八进制

 

二进制-->十六进制

4个二进制==1个十六进制

0110 0100 =64

 

四、正负数编解码

负数表示方法:补码编码

原码--除符号位取反--+1

最高位负权重,其他位都是正权重

例:-5+2=-3

-5原码:1101

反码:1010

补码:1011

2原码:0010

1011+0010=1101

1101=-1*8+4+1=-3

 

-1(8bit)

1000 0001

取反:1111 1110=-128+64+......+2=-1

1000 0000-1 = 0111 1111

-128+127=-1

 

计算机的内存 解码过程

1111 1111------>%d------->-1

                  ------>%u------->(全正权重解码unsigned)

 

五、c语言赋值

赋值:

A=B B的空间逐位拷贝到A的空间

大容量拷贝到小容量--截断(只保留小容量低位)

小容量拷贝到大容量--补齐(补符号位)

%x:以十六进制显示,默认int大小显示

%hhx:输出一个字节

%hx:输出两个字节

%hd:输出两个字节,十进制补码解码

注:需考虑容量的范围

 

数的表示:按照一个解码器来解析的

全正权值解码:unsigned--多用于表示状态

负权值解码(补码解码):signed--多用于数学数字表示

char:解码方式具体看编译器

 

六、关键字unsigned signed

unsigned signed区别:

不影响赋值(逐位拷贝),不限制数据类型的容量

只影响运算操作,限制了修饰的数据的操作行为(< > /)

例:unsigned int a=-2;

        int b=-2;

a与b在内存中存储相同,当进行a/2和b/2运算时内部行为不同

内存溢出会造成段错误(segment fault),会造成程序异常退出

在函数参数中需区分需求,选择使用unsigned或者signed

 

七、printf的查看方法

printf--查看内存工具

 %进制选择 d/u x o(x/o无正负数解码)

 % 位宽 进制选择

  默认位宽位int  

  • 18
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值