在c语言中1<<i与i<<1的区别是什么

如题所述

1<<i是把1左移i位,每次左移以为就是乘以2,所以1<<i的结果是1乘以2的i次方
i<<1就是把i左移一位,即i乘以2,假如i=5,最后结果就是5*2=10
至于为什么左移一位是乘以2,这是运算器内部机理,说起来就更多了,计算机做乘法运算的时候不是一个个的相加,而是用移位来实现的。>>这个符号是右移,与左移相反,右移是除以2.
这里还有一点容易搞错的,就是移位符号的左边是需要计算的数,右边是需要移动的位数。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-10-14

    如果i是浮点型(a可以是浮点或是整型),a=a/i和a*=1/i ;这两个算式没有区别!

    如果a是浮点型,i是整型,则当i等于1时,两式相同,否则,a=a/i结果为一个小数,而a*=1/i结果为0。因为,1/i是两个整数相除,结果还是整数,当i的绝对值大于1时,1/i结果为0。

    如果a,i都是整型,则两式只有特殊情况下相同:

      i=1时,两式相同,结果为a

      i等于1时,

        |a|<|i|,两式相同,结果为0

        否则,a=a/i  结果非0,   a*=1/i结果为0(原因同2)

第2个回答  2018-03-31

c语言中“1<”的意思是:

将1的二进制名代码向左移20位。左移一位相当于对该数乘2,左移n位就相当于乘n个2。
把1,位左移20位(按二进制来移动)在32位机中,十进制的1就是 00000000 00000000 00000000 00000001,位左移20位就是 00000000 00010000 00000000 00000000,也就是十进制的1048576。

二进制是计算技术中广泛采用的一种 数制。 二进制数据是用0和1两个 数码来表示的数。它的基数为2,进位规则是“逢二进一”,借位规则是“借一当二”,由18世纪德国数理哲学大师 莱布尼兹发现。

当前的 计算机系统使用的基本上是 二进制系统,数据在 计算机中主要是以补码的形式存储的。计算机中的二进制则是一个非常微小的开关,用“开”来表示1,“关”来表示0。

本回答被网友采纳
第3个回答  2017-02-08
--i 是先执行i=i-1,然后再使用i的值, 这时的i 值就是表达式--i的值。
i-- 是先使用i的值作为表达式i--的值,然后,执行i=i-1操作。
第4个回答  2014-01-20
区别大了,前面是,1左移i位,后者是,i左移一位
相似回答