二进制数、移位运算

一、二进制数

        二进制数据是用0和1两个数码来表示的数。它的基数为2,进位规则是“逢二进一”,借位规则是“借一当二”。

        为了让大家更好的理解二进制数,下面笔者将借用十进制数来与二进制数进行对比去讲解。首先我们先从位权说起,对于十进制数42来说,4表示的就是4×10 = 10,2表示的就是2×1 = 2。这里和各个数位上的数值相乘的10、1,就是位权。

        基数:数值的表现方法,进位计数制中各数位上可能有的数值的个数,十进制的基数是10,二进制的基数是2;

        其实大家所说的数值,表示的就是构成数值的各数位的数值和位权相乘后相加的结果。

举例:二进制数100111用十进制数表示的话是39

解释:1×32 + 0×16 + 0×8 + 1×4 + 1×2 + 1×1 = 39

二、移位运算

        移位运算和乘除运算的关系:

        移位运算指的是将二进制数值的各数位进行左右移位,我们在学习和理解二进制的移位运算时,可以通过与十进制数的移位运算对对比,这样可以很好的帮助我们去理解和学习移位运算

在c语言中以 >> 表示右移 、 << 表示左移;其中箭头所指的方向表示要移位的位数;

eg:   >> 2 :表示右移两位                         5 <<  : 表示左移五位

首先我们用一个十进制数去举例说明,a = 9 ,当我们需要对a进行移位运算时,如果我们进行左移2位的操作,操作之后a的值将会变为900;

我们将9转化为二进制数为1001,左移两位100100(十进制为36),右移两位10(十进制为2);

读到这里时,读者是否还记得我们上面所提到的基数这个概念,十进制数的基数为10,二进制数的基数为2,此时我们在去对比上述十进制数9和二进制数1001左移两位后与原本数值的大小对比(十进制)

我们发现十进制数左移2位数值变为了原来的100倍也就是(10的2次幂)

                二进制数左移2位数值变为了原来的4倍也就是(2的2次幂)

其实,我们反复思考几遍就会发现确实如此。十进制数左移后会变成原来的10倍、100倍、1000倍·····同样,二进制数左移后会变成原来的2倍、4倍、8倍······,右移则会变为原来的1/2 、1/4 、1/8······;

        逻辑右移与算数右移的区别:

        算数右移:将二进制数作为带符号的数值进行运算,移位后要在最高位填充移位前符号位的值(0或1),如果数值是用补数表示的负数值,那么右移后在空出来的最高位补1,如果是正数,只需在最高位补0即可;

        逻辑右移:右移后在空出来的最高位补0即可;

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值