问题标签 [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.
vb.net - 如何在 VB.NET 中按位移位?
如何在 VB.NET 中按位右移/左移?它甚至有为此的运算符,还是我必须使用一些实用方法?
c# - 在 .NET 中移动符号位
我正在从单色位图中读取位。我short
以相反的顺序存储每16位。如果位图中的位为黑色,则存储 1。如果为白色,则存储 0。
例如:对于位图:bbbw bbbw bbbw wwww
我的简称是:0000 0111 0111 0111
我尝试这样做的第一种方法是:
经过一次分配和轮班后,我得到了预期的 -32768(1000 0000 0000 0000)。
第二次后我得到-16384(1100 0000 0000 0000)。
我更改了要使用的代码ushort
并将if
行更改为s |= (ushort)Math.Pow(2, 15);
,现在它可以工作了。
我的问题是:为什么符号位不会在 .NET 中移动?有没有办法移动符号位?
operators - 使用 ALU 运算符的一位右桶移位?
我想知道是否有一种仅使用 ALU 运算符(NOT、OR、AND、XOR、ADD、SUB)对 8 位二进制值执行右移的有效方法
我已经能够通过将 8 位二进制值与自身相加来实现左移,因为左移相当于乘以 2。但是,我想不出一种方法来实现右移。
到目前为止,我想出的唯一方法是只执行 7 次左桶移位。这是唯一的方法吗?
c++ - 位左移
假设我想向左移位i
两次并将值存储在f
.
那是对的吗?我究竟如何在 C/C++ 中做到这一点?
php - PHP右移和否定结果?
我在将一些 C 代码转换为 PHP 时遇到了问题,特别是在使用右移运算符时。
编辑:在以下示例中,位 = 0;
原始C代码:
PHP代码:
如果我从codeword
130728 开始,在 CI 中得到预期的结果 -1。在 PHP 中我得到 255。我知道这与算术/逻辑移位差异有关,并且由于 MSB 保持为零而没有引入负号。
在 PHP 中是否有不涉及转移的“快速”方法?例如,通过基本算术或类似方法,这会给我预期的答案吗?
c++ - 使用移位运算符除以任意数
n
例如,如何24
使用移位运算符和加法来划分一个数字?
( n % 24 == 0
)
javascript - 什么是 JavaScript >>> 运算符以及如何使用它?
我正在查看来自 Mozilla 的代码,该代码向 Array 添加了过滤方法,其中有一行代码让我感到困惑。
我以前从未见过 >>> 在 JavaScript 中使用。
它是什么,它有什么作用?
c - C语言中的负数右移
我有 C 代码,我在其中执行以下操作。
现在当我尝试
我明白了
这是预期的吗?
我能想到类似的东西
也就是说,-32767.5 四舍五入为 -32768。
这种理解正确吗?
c# - 为什么我得到一个负值位移的奇怪结果?
这个问题不是这个问题的重复。
我遇到了一种情况,我可能不得不将(正)数左移一个负值,即 8 << -1。在这种情况下,我希望结果为 4,但我以前从未这样做过。所以我编写了一个小测试程序来验证我的假设:
令我震惊和惊讶的是,这给了我以下输出:
谁能解释这种行为?
这是一个小红利。我将左移更改为右移,并得到以下输出:
assembly - x86汇编右移运算符SHR的副作用?
我正在使用 ASM 调试器 ollydbg 跟踪一个程序,我遇到了这个代码片段,它是一个循环段:
我可以跟踪并了解其他操作员所做的事情,当我追踪它时,这很有意义。但是 SHR EBX,CL 对我来说没有意义。
但是我在跟踪时看到的是,如果循环迭代是奇数,则丢弃 LSB 并将 MSB 移动到它的位置。如果它是偶数,那么 ebx 是不变的。每次循环迭代,ecx寄存器变化如下:
我期望看到的是在第二个或第三个循环之后,ebx 总是会被清零,因为 0x20 你已经移动了 32 位。
我有点困惑,有人能解释一下吗?
谢谢