操作符详解

目录

1.操作符的分类

2.二进制与计算

3.移位操作符

4.位操作符

5.逗号表达式


1.操作符的分类

算术操作符:+ ,-,*,/

移位操作符:>>     <<

位操作符:&   |    ^

赋值操作符: = 、+= 、 -= 、 *= 、 /= 、%= 、>= 、&= 、|= 、^=

单⽬操作符: !、++、--、&、*、+、-、~

关系操作符: > 、>= 、< 、<= 、 == 、 !=

逻辑操作符: && 、||

条件操作符: ? :

2.二进制与计算

概念

首先我们需要弄清什么是进制,进制是一种用于计量和表示数值的方法。它基于一个基数,即基本数值单位,用来表示所有的数字。最常见的进制是十进制,即基于10的进制系统,使用0到9这10个数字来表示所有的数值,生活中常见的还有60进制,二进制,八进制,十六进制,而通过十进制,我们便可以知道,二进制是基于2的进制系统,使用0,1这两个数字来表示所有的数值,十进制是逢十进一,二进制我们类比可知是逢二进一

进制转换

要了解进制转换,我们需要先引入权,权重,权重值的概念,

  • 权(digit weight):在十进制系统中,每一位数字的权是该数字乘以其所在位置的价值。例如,在数字123中,3的权是3(因为它在最右侧,表示个位),而2的权是20(因为它在十位,代表十个2),1的权是100(百位)。

  • 权重(weight):权重是一个与数字在数制中的位置有关的值。在十进制和二进制等数制中,权重通常用作确定数位所代表的数值大小。例如,在二进制中,每一位的权重是2的幂次(从右到左,幂次从0开始递增)。

  • 权重值(weight value):权重值是指一个数字在特定位置上所表示的具体数值。例如,在二进制数1101中,最右边的1的权重值是1,因为它的权重是2^0=1。

举例说明:二进制的1101

2进制的位1101
权重2^32^22^12^0
权重值8421

那么我们便可以求出1101代表的十进制数字是1*8+1*4+0*2+1*1=13。这样,我们就可以完成二进制转换成十进制,那么如果我们需要完成十进制转换成二进制呢?

在这里我们使用除基取余的方法,比如说给定一个10进制数125

基数除数余数
21251
2620
2311
2151
271
231
211
0

我们从下往上依次读取,便可以知道125的二进制数为1111101。

原码反码补码

原码、反码和补码是计算机中用于表示有符号数字的不同方式。

  • 原码:即将数字本身以二进制形式表示,最高位为符号位(0 表示正数,1 表示负数),其余位为数值部分。例如,数字 5 的原码为 0101。
  • 反码:对于正数,反码与原码相同;对于负数,反码将原码的数值部分取反(0 变成 1,1 变成 0),但符号位保持不变。例如,数字 -5 的原码为 1101,其反码为 1010。
  • 补码:对于正数,补码与原码相同;对于负数,补码是将该数的反码的最低位加 1。例如,数字 -5 的反码为 1010,其补码为 1011。

3.移位操作符

左移操作符

移位规则:左边抛弃,右边补0;

#include <stdio.h>
int main()
{
	int a = 13;
	int b = a << 1;
	printf("%d\n", a);
	printf("%d\n", b);
	return 0;
}

13的二进制数是00000000000000001101,左移一位就是0000000000011010,转换成十进制数是26,

运行结果验证了我们的想法是正确的

右移操作符

移位规则:⾸先右移运算分两种:

1. 逻辑右移:左边⽤0填充,右边丢弃

2. 算术右移:左边⽤原该值的符号位填充,右边丢弃

对于绝大多数的编译器,都是采取的算术右移,还是13,右移之后是0110,就是6

4.位操作符

位操作符有

1.& 按位与

2.|  按位或

3.^ 按位异或

4.~ 按位取反

#include <stdio.h>
int main()
{
	int a = 13;
	int b = 5;
	printf("%d\n", a & b);
	printf("%d\n", a | b);
	printf("%d\n", a ^ b);
	printf("%d\n", ~8);
}

5.逗号表达式

逗号表达式,就是用逗号隔开的多个表达式,逗号表达式从左向右依次运行,结果为最后一个表达式的结果。上代码

#include <stdio.h>
int main()
{
	int a = 13;
	int b = 5;
	int c = (a = a + 5, b = b + 10, a - b);
	printf("%d\n", c);
}

首先执行a=a+5,得到a为18,然后执行b=b+10,得到b为15,最后执行a-b,得到3,赋给c的值即为a-b的结果

SQLAlchemy 是一个 SQL 工具包和对象关系映射(ORM)库,用于 Python 编程语言。它提供了一个高级的 SQL 工具和对象关系映射工具,允许开发者以 Python 类和对象的形式操作数据库,而无需编写大量的 SQL 语句。SQLAlchemy 建立在 DBAPI 之上,支持多种数据库后端,如 SQLite, MySQL, PostgreSQL 等。 SQLAlchemy 的核心功能: 对象关系映射(ORM): SQLAlchemy 允许开发者使用 Python 类来表示数据库表,使用类的实例表示表中的行。 开发者可以定义类之间的关系(如一对多、多对多),SQLAlchemy 会自动处理这些关系在数据库中的映射。 通过 ORM,开发者可以像操作 Python 对象一样操作数据库,这大大简化了数据库操作的复杂性。 表达式语言: SQLAlchemy 提供了一个丰富的 SQL 表达式语言,允许开发者以 Python 表达式的方式编写复杂的 SQL 查询。 表达式语言提供了对 SQL 语句的灵活控制,同时保持了代码的可读性和可维护性。 数据库引擎和连接池: SQLAlchemy 支持多种数据库后端,并且为每种后端提供了对应的数据库引擎。 它还提供了连接池管理功能,以优化数据库连接的创建、使用和释放。 会话管理: SQLAlchemy 使用会话(Session)来管理对象的持久化状态。 会话提供了一个工作单元(unit of work)和身份映射(identity map)的概念,使得对象的状态管理和查询更加高效。 事件系统: SQLAlchemy 提供了一个事件系统,允许开发者在 ORM 的各个生命周期阶段插入自定义的钩子函数。 这使得开发者可以在对象加载、修改、删除等操作时执行额外的逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值