问题标签 [bit-shift]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
bit-shift - 班次算子是如何实现的?
我想知道当我做 4<<2 时,下面到底发生了什么?是否执行任何乘法运算或如何计算值。如果您对移位运算符的实现有参考,请回复我。提前致谢
c# - 为什么 F# 位运算符用 1 填充有符号类型?
我在看 F# doc on bitwise ops:
按位右移运算符。结果是第一个操作数的位右移了第二个操作数中的位数。从最低有效位置移出的位不会旋转到最高有效位置。对于无符号类型,最高有效位用零填充。对于有符号类型,最高有效位用 1 填充。第二个参数的类型是 int32。
与 MSB 用零填充的 C++ 语言(可能还有 C)相比,这种设计选择背后的动机是什么?例如:
其中-2147483648 =
掩码等于 1073741824
其中 1073741824 =
现在,如果您在 F#(或 C#)中编写相同的代码,这确实会用一个填充 MSB,您将得到 -1073741824。
其中-1073741824 =
c# - 为什么 Java 和 C# 有位移运算符?
整数乘法(暂时忘记除法)之间的差异是否仍然有利于移位,如果是,差异有多大?
它似乎只是一个低级别的优化,即使你想要它不应该(C#/Java)到字节码编译器或 jit 在大多数情况下捕获它?
注意:我测试了 C# 的编译输出(使用 gmcs Mono C# 编译器版本 2.6.7.0),即使乘以 2 的倍数,乘法示例也没有使用 shift 进行乘法运算。
C# http://csharp.pastebin.com/hcrRnPrb
cil http://csharp.pastebin.com/0js9F2c1
PS我忘记了在字节上使用它可能会有些用处,但在将它用于数字时仍然遇到一些麻烦。
bit-shift - 有符号整数的逻辑右移操作
对有符号整数 -28 进行逻辑右移 3 操作。正确答案是什么?
- +203
- +83
- +3
- -3
2 的 -28 的补码是 11100100。现在,如果我应用逻辑右移操作,我不会得到上述任何一个答案。
java - >> 在 Java 中做什么?
好的,我尝试查找什么>>
,或 shift 的意思,但正如这个网站所解释的那样,这让我无法理解:http ://www.janeg.ca/scjp/oper/shift.html
如果和孩子说话,会是什么解释?
java - 应用于字节变量的无符号右移行为
考虑以下java代码片段
输出:
预期输出:
如何?因此,1111 0001
在无符号右移后,二进制中的 b 为 b但为什么会这样 呢?0000 1111
0x0f
0xff
objective-c - 算术移位
逻辑右移和算术右移有什么区别?
c - 为什么对 C 枚举定义中的值使用按位移位运算符?
Apple 有时在其枚举定义中使用 Bitwise-Shift 运算符。例如,在 Core Graphics 的CGDirectDisplay.h文件中:
为什么不简单地在“正常”枚举中使用递增int呢?
c - 左移操作中的意外输出...?
我读到左移e1<<e2
相当于e1* 2e2
. 但是对于代码:
输出是40但根据我应该是30。因为x<<4
它是80 .(但预计是40)。
虽然 forx<<1
和x<<2
output 是10和20符合预期。
请解释一下这个逻辑。