0
A
回答
2
从我所看到的,你通过循环一次,与i == 20
。
打破它 - 10.0 * 2 == 20.0
和10.5 * 2 == 21.0
。
您的for循环基本上是for(var i = 20; i < 21; i++)
。
然后你or
归零的mask
值与i << 20
的结果,这是1048576
并退出循环。
按预期工作。
右移位操作<<
有两个参数 - 值多少转移和。
要理解它,您需要考虑二进制以及如何用二进制表示事物。
例如,使用4位,你会看到1
表示为:
0001
如果它左移两个地方:
1 << 2
你得到:
0100
以十进制表示的是4
。这同样适用于<< 20
,它将所有位20位移到左边(丢弃溢出位)。
100000000000000000000 (binary) == 1048576 (decimal)
相关问题
- 1. 数据类型的问题
- 2. Typescript数据类型问题
- 3. 元数据类型问题
- 4. 数据集类型问题
- 5. JAVASCRIPT数据类型问题
- 6. Java数据类型问题
- 7. 数据类型问题
- 8. 双数据类型问题
- 9. 数据类型的问题
- 10. 数据类型的问题
- 11. 数据类型的问题
- 12. oracle数据类型问题
- 13. 不能将类型'long'隐式转换为'ulong'。 (+ random ulong)
- 14. C#内存类型比ulong大
- 15. c#Enumerable.Sum方法不支持ulong类型
- 16. 检查枚举类型是ulong
- 17. Sql Server数据类型值问题
- 18. 问题对Cassandra的数据类型
- 19. 核心数据关系类型问题
- 20. Oracle号码数据类型问题
- 21. 简单闪存数据类型问题
- 22. 数据类型不匹配的问题
- 23. iPhone OpenGL:数据类型问题
- 24. C中的数据类型的问题
- 25. 熊猫数据类型转换问题
- 26. WCF DataService“时间”数据类型问题
- 27. 抽象数据类型问题
- 28. 关于“bit”数据类型的问题
- 29. flex中的数据类型问题
- 30. Oracle GRCC Tcg数据类型问题
是的你是对的,但我想知道它是怎么发生的? – Sampath
@Sampath - 你从来没有读过你的头脑中的代码?我不明白你认为它不应该在哪里? – Oded
其实我需要一个解释,当我20岁时,它是如何变成1048576的? – Sampath