操作符详解+进制的转换

C语言中常用的进制转换有二进制,十进制,八进制,十六进制。下面我们就来讲解这些进制的转化。

十进制与二进制的转换

我们十进制转二进制,以123为例,我们将123除以2得到的商(61)写在123下面,余数(1)写在123之后,继续用得到的商1去除2,再得到商(30)余数,重复计算直到商为0,将得到的余数倒着打印出来就是二进制。

二进制转十进制很简单。从二进制数最右边一位起,该位数字乘以2的0次方,往左移一位,乘以的2的次方数就加1,比如右边起第二位数字乘以2的1次方。将所有这样计算得出的结果相加,就得到对应的十进制数。 

(如图):

二进制与八进制与十六进制的转化

将二进制数转换为八进制数,可按以下步骤进行:从二进制数的最右边开始,每三位分为一组。对于每一组:
1. 从右至左,给每位数字乘以 2的相应次方,最右边的数字乘以 2的0次方,向左一位乘以 2的1次方,再向左一位乘以 2的2次方。
2. 将这三位数字乘以相应次方后的结果相加,得到的和就是八进制数中的一位。
3. 若最左边一组不足三位,就在左边补 0 凑足三位,再按上述方法计算。 

将二进制转化为十六进制数,可以按以下步骤进行:从二进制数的最右边开始,每四位分为一组。对于每一组:
1. 从右至左,给每位数字乘以 2的相应次方,最右边的数字乘以 2的0次方,向左一位乘以 2的1次方,再向左一位乘以 2的2次方。
2. 将这四位数字乘以相应次方后的结果相加,得到的和就是十六进制数中的一位。
3. 若最左边一组不足四位,就在左边补 0 凑足四位,再按上述方法计算。

注意:若想要达到十进制转八进制或十六进制,那么需进行两步骤:

1:先将十进制转换为二进制在通过二进制转换为八进制或十六进制。反之亦然。

操作符详解

关于操作符这里我们讲解常用的这些操作符(如:<<左移操作符,>>右移操作符

<<左移操作符

移位规则:左边抛弃,右边补0;(移位的操作只能是整数)(移位只能是移动补码)

在了解这个之前我们先来了解整数的二进制表示:

整数的二进制表示有3种:源码,反码,补码。(int==四个字节==32位)

首位(最左边数)是符号位,1代表负数,0代表正数。

反码就是除了符号位的其它位如果是1就变成0,是0就变成1;

补码就是在反码的基础上加1;

(注意:整数源码,反码,补码都是一样的,而负数才是源码,反码,补码有区别)

下面我们来用实例演示:

当a左移一位最左边的0去掉,最右边补上0;最后按照二进制转十进制得出b对应的数值20.

右移操作符>>

移动规则:

1.逻辑右移:向右移动,左边补0

2.算数右移:向右移动,左边补对应符号位(大部分编译器采用算数右移)

具体操作如下例演示:

(如图)

注意):对于左移操作符和右移操作符我们都不可以移动负数位

比如5>>-1应该写为5<<1才对

按位与&

按位与同样是两个整数的补码进行比较,如果两个补码都为1则为1,两个补码不同(其中有一个为0)则为0。

同样我们通过事例来说明:

(如图)

按位或|

操作方式:两个整数的补码相比,如果其中有一个有1就为1,没有则为0。

具体操作如图:

按位取反~

操作方法:将整数的补码全部取反(0变成1,1变成0)包括符号位。

存储的是补码,输出计算时要先取反再+1得到源码,对二进制源码计算输出数字。

按位异或^

操作方法:相同为0;相异为1;

具体操作为图所示:

(如图)

下面是一个使用异或操作符的实例:

题目:我们在不添加第三个变量的前提下实现a数与b数的交换。

如图:

理解这个题目我们首先要知道的点有:

1.a^a  等于0

2.0^a  等于a(如图)

下面我们通过按位与&来判断一个数的二进制位有多少个1

我们在做这题之前我们要知道当n&1的时候如果等于==1就说明这个n的最后一位二进制位上是1,如果n&1等于0那就说明n最后一位二进制位为0。(如图)

以上就是我对几个逻辑操作符的全部介绍(dogs)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值