基础回顾-2 基本类型

C的基本类型分为数值型(整型:short,int,long;实型:float,double,long double)和字符类型char 。

整型

整型分为 短整型short,整型int 和 长整型long。各类型占用字节数跟CPU位数相关

类型16位CPU32位64位
int2 (btye)44
unsigned int2 (btye)44
short222
unsigned short2 (btye)22
long448
unsigned long448

一般现在使用的64位CPU。

unsigned 表示无符号,无符号数都是正值,值范围从 0 开始。
例如:
int 在64位CPU表示值范围为 [-2^31 , 2^31 - 1]
unsigned int 在64位CPU表示值范围为 [0, 2^32 - 1]
表示的数值个数都是 2^32

不同进制的数在C中的表示形式

2进制数以0b或者0B(不区分大小写)开头,如

int a = 0b101;  //换算成十进制为 5
int b = -0b110010;  //换算成十进制为 -50
int c = 0B100001;  //换算成十进制为 33
复制代码

8进制数以0开头,如

int a = 015;  //换算成十进制为 13
int b = -0101;  //换算成十进制为 -65
int c = 0177777;  //换算成十进制为 65535
复制代码

16进制数以0x0X(不区分大小写)开头,如

int a = 0X2A;  //换算成十进制为 42
int b = -0XA0;  //换算成十进制为 -160
int c = 0xffff;  //换算成十进制为 65535
复制代码

在输出时,数值不能以2进制输出,只能以十进制,八进制,十六进制输出。输出符号为

shortintlong
八进制%ho%o%lo
十进制%hd%d%ld
十六进制%hx 、%hX%x、%X%lx、%lX

实型

实型分为,浮点型float,双精度型double,长双精度long double 。计算机存储小数精度有限,无法存很多很多位的小数

类型占用字节有效数字
float4 (btye)6-7位
double815-16
long double16

输出符号为 %f,默认是保留小数点后6位,设置 %.2f 可以保留小数点后两位。

float a = 3.14;
printf("%f -- %.2f\n", c,c);   //打印结果为  3.140000 -- 3.14
复制代码

字符类型

字符类型char,只占用 1 个字节,因为 char 变量在内存中存储的是字符对应的 ASCII 码值,ASCII码值从 0 ~ 127 ,刚好可以用 1 个字节长度的二进制数表示。char 类型变量如果以 %c 输出,会根据 ASCII 码表转换成对应的字符;如果以 %d 输出,那么还是整数。

char a = 'A';
int b = a;
printf("%c -- %d\n", a,b);   //打印结果为  A -- 65
复制代码
  • 长字节的类型向短字节的类型赋值转换时,会发生截断,如 int -> char 时,会把 int 的低位字节保留,超过 char 长度的高位字节丢弃。
  • 反过来则会发生扩展,把不足的字节补全,正数补0,负数补1

运算

不同类型进行运算时,会发生类型转换

  • 短字节向长字节看齐
  • 有符号向无符号看齐
  • 整型向浮点型看齐
  • 单精度向双精度看齐

先转换类型,再进行计算。

自增,自减

i++++ii----i 。 符号在后,则为运算前取值。符号在前,运算后取,即

int i = 0 ;
int j = i++ ;   // i = 1, j = 0
复制代码
int i = 0 ;
int j = ++i ;   // i = 1, j = 1
复制代码
int i = 0 ;
int j = i--;    // i = -1, j = 0
复制代码
int i = 0 ;
int j = --i;    // i = -1, j = -1
复制代码

自增自减只能对变量进行操作,不能对常量操作,比如 ++0 等是错误的

复合运算符

复合运算符是指 *=+=-=等之类的运算符,向右组合。

int i = 0;
i += 2;             // i = i + 2;          
i *= 3;             // i = i * 3;
printf("%d\n",i);    //  6
复制代码
深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值