趣味算法-读书笔记(二)

14天阅读挑战赛

1. 基本数据类型

原码 反码和补码

正数的反码是其本身

负数的反码是在其源码的基础上,符号位不变,其余各个位取反

负数的补码是在其原码的基础上,符号位不变,其余各位取反,最后+1

1.1. 整数类型

int 占用4个字节 32个比特

long 占用8个字节 64个比特

short 占用2个字节 10个比特

1.2. 浮点类型

浮点类型一般用于保存小书

float 单精度浮点 占用4个字节 32个比特

double 双精度浮点 占用8个字节 64个比特

字符类型

char 占用1个字节 可以表示所有的ASCll码的字符 每一个数字对应的是编码表中的一个字符

编码表包含所有的常见的字符 ,包括运算符号 数字 大小写字母等

变量:

数据类型 变量名称 < 初始值

不能以数字开头,不能重复使用

不能使用关键字,可以包含数字但是不能数字开头

注意变量一定要先声明再使用

float 单精度浮点数 4个字节,32bit

double 双精度浮点数 8个字节,64bit

#include <stdio.h>


int main() {
    double a;
    a = 0.5;
    int b = 2;
    int c = a + b;
    printf("a=%f, b=%d, c=%d", a , b, c);
    return 0;
}

#include <stdio.h>


int main() {
    double  a = 3.5 ;
    float  b = 4.5 ;
    printf("a = %f, b = %lf ", a ,b );
    return 0;
}

1字符类型

char

变量

变量的使用

无符号数

类型转换

#include <stdio.h>


int main() {
    double b = 3.74 ;
    int i = b ;
    printf("%d", i);
}

  1. 不同的类型优先级不同(根据长度而定)
  2. char和short类型在参与运算时一律转换为int再进行运算
  3. 浮点类型默认按双精度进行计算,所以就算有float类型,也会转换为double类型参与计算
  4. 当有一个更高优先级的类型和一个低优先级的类型同时参与运算时,统一转换为高优先级运算,比如int和long参与运算,那么int转换为long再算,所以结果也是long类型,int和double参与运算,那么先把int转换为double再算

运算符

基本运算符

加法:+

减法:-

乘法:*

除法:/

赋值:=

#include <stdio.h>

int main() {
    int a = 10, b = 9;
    printf("%d", a + b);
}

运算符的优先级

#include <stdio.h>

int main() {
    int a = 20, b = 3;
    printf("%d",a + b * b);
}

先算乘除后算加减

#include <stdio.h>

int main() {
    int a = 20, b = 3;
    printf("%d",((a + 6)*b)*b);
}

基本都用小括号

逗号运算符

逗号运算符从前往后依次执行,赋值结果时最后边的结果

自增自减运算符

a = a + 1 ;

++a ;

#include <stdio.h>

int main() {
    int a = 11;
    --a;
    printf("%d", a);

}

重点内容:

自增运算符++在前,那么先自增再出结果;自增运算符++在后,那么先出结果再自增

复合赋值运算符

#include <stdio.h>

int main() {
    int a = 11;
    int b = a += 5;
    printf("%d", a);

}

#include <stdio.h>

int main() {
    int a = 11;
    a--;
    printf("%d", a);
}

位运算符

<<是让所有的bit位进行左移操作,上面就是左移1位

10 = 00001010 现在所有bit位置上的数据左移一位 00010100 = 20

左移

让这些2进制数进行乘2

右移

让这些2进制数进行除2

#include <stdio.h>

int main() {
    int a = 6, b = 4;
    int c = a & b;
    printf("c = %d ", c);

}

按位与实际上也是根据每个bit位来进行比较

4 = 00001000

6 = 00000110

按位与实际上就是让两个数的每一位都进行比较,如果两个数对应的bit位都是1,其他情况一律为0

所以计算结果为:00000100 = 4;

除了按位与运算,还有按位或运算

#include <stdio.h>

int main() {
    int a = 6, b = 4;
    int c = a | b;
    printf("c = %d ", c);

}

4 = 00001000

6 = 00000110

00000110 = 6

按位或实际上也是让两个数的每一位都进行比较,如果两个数对应bit位上其中一个是1,那么结果的对应的bit位上就是1,其他情况为0;

还有异和按位非

#include <stdio.h>

int main() {
    int a = 6, b = 4;
    int c = a ^ b;
    printf("c = %d ", c);

}

^表示按位异或运算,让两个数的每一位都进行比较,如果两个数对应bit位上不同时为1或者同时为0时,那么结果就是1,否则结果就是0,所以这里结果为2

#include <stdio.h>

int main() {
    int c;
    c = 3;
//    00000011
    printf("c = %d ", ~c);

}

~ 按位否定针对某个数进行操作,它会将这个数的每一个bit位都置反,0变成1,1变成0

按位运算都是操作数据底层的二进制位来进行的

逻辑运算符

&&逻辑与

||逻辑或

备注:如有错误,请谅解!

此文章为本人学习笔记,仅供参考!如有重复!!!请联系本人

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

晚风挽着浮云

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值