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

发布网友 发布时间:2022-04-22 21:55

我来回答

11个回答

热心网友 时间:2023-01-20 18:43

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

热心网友 时间:2023-01-20 20:01

如果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都是整型,则两式只有特殊情况下相同:

热心网友 时间:2023-01-20 21:35

在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。

热心网友 时间:2023-01-20 23:27

--i 是先执行i=i-1,然后再使用i的值, 这时的i 值就是表达式--i的值。
i-- 是先使用i的值作为表达式i--的值,然后,执行i=i-1操作。

热心网友 时间:2023-01-21 01:35

区别大了,前面是,1左移i位,后者是,i左移一位

热心网友 时间:2023-01-21 03:59

这要看变量的数据类型是浮点还是整形了。
对于整形数之间相除,结果是取其去余数的商。如1/3=0, 7/2=3等
结论:(1)两个数都为整形时,结果不一样。如int i=3,那么1/i=0. 若a=10,那么a=a/i的结果是a为3,
而a*=1/i的结果是a为0.
(2)i为浮点时,两个表达式结果一样。如float i=3,那么1/i=0.33333.

热心网友 时间:2023-01-21 06:41

1<<i 把1左移i位,左移1位就相当于X2
i<<1 把i左移1位,相当于x2

热心网友 时间:2023-01-21 09:39

<<在C++中,有两个运算含义:1.重载输出流运算符,一般运用格式为:cout<<x;其中cout为流文件,如显示设备,输出设备,或者数据文件等。2.数据移位运算符,左移几位,如:x=i<<4;就是将i的值左移4位(放大2的4此方)后,赋给x,若i=2,则X=32。

热心网友 时间:2023-01-21 12:53

1 << i ,1左移i位
i << 1, i 左移 1位

热心网友 时间:2023-01-21 16:25

两个结果结果不同:比如
a=3,i=2;
a=a/i的结果是:1
而a*=1/i的结果是0吧

热心网友 时间:2023-01-21 20:13

  1<<i表示2的i次方  i<<1的意思是i*2  谢谢采纳

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com