操作符的应用与二进制

一.操作符分类👋

1.移位操作符🧡
2.位操作符🧡
3.单目操作符🧡
4.算术操作符
5.赋值操作符、关系操作符
6.逻辑操作符
7.条件操作符
8.逗号表达式、下标引用、函数调用和结构成员

前面三种均是在使用过程中需要用二进制转换的,也是我们本篇文章介绍的重点~

二.整数二进制表达式🤞🏼

首先我们要知道在整数二进制的表达式中分为原码、反码和补码。

①.所谓原码,就是按照一个数的正负,直接写出其二进制表达形式,就是原码。而最高位的数字,为符号位。若最高位为1,则表示该数为正数,而若最高位为0,则表示该数为负数。
②.反码,则是在原码符号位不变的情况下,其他位按位取反。将0变为1,1变为0.
③.补码,则是反码+1.

这里有个很巧妙地点就是,由原码到补码应是取反、加一,而从补码到原码可以通过减一取反。同时!!补码通过取反加一,也可以得到原码!!!

三.相关操作符的详细介绍 👆🏻

1.移位操作符🌞

<<左移操作符
>>右移操作符

注:1.内存中储存的起始是补码的二进制
2. 移位操作符的操作数只能是整数
3.只能移动正数位,不能移动负数位

1.1左移操作符

左移操作符的移位规则:左边抛弃,右边补0.
在这里插入图片描述
在这里a<<1的结果是移位后的效果,但是a本身的值是不变的。
在这里插入图片描述

1.2右移操作符

右移运算分为两类:
1.逻辑移位:右边丢弃,左边用0填充
2.算术移位:右边丢弃,左边用符号位填充
在这里插入图片描述

2.位操作符🌞

&按位与
竖杠按位或
^按位异或

注:他们的操作数必须是整数,也是针对二进制位

1.&按位与 :两个数对应的补码,有0则为0,全为1才为1.
2.| 按位或:两个数对应的补码,有1则为1,全为0才为0.
3.^按位异或:两个数对应的补码,相同为1,相异为0.

异或操作符的特点:
①.a^a=0
②.0^a=a
③.异或支持交换率

一道面试题:不能临时创建变量(第三个变量),实现两个数的交换

int main()
{
	int a = 10;
	int b = 20;
	a = a ^ b;
	b = a ^ b;   b=a^b^b=a
	a = a ^ b;   a=a^b^a=b
	printf("%d %d", &a, &b);
	return 0;
}

通过异或操作符,我们可以不用函数,不用创建第三个变量,从而实现两个数的交换。

3.单目操作符🌞

单目操作符有很多种,但在这里我只为大家介绍一种用到二进制表达式的。

‘ ~ ’
对一个数的二进制按位取反
若a=0,则a的补码为32个0,取反后为32个1,也就是补码为32个-1,则该数为-1.即~a=-1.

4有关有符号的类型和无符号的类型🌞

在这里插入图片描述
🍒🍒🍒这节有关会用到二进制表达的操作符的讲解就到这里啦~希望可以为大家带来帮助!也希望大家可以多多关注我,我也会努力为大家带来更有用的博客!🥕🥕🥕

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值