按位移位计算器
将整数的位向左或向右移位 — arithmetic/signed >> 或 logical/unsigned >>> — 在选定的位宽(8/16/32/64)下,显示移位前/后的二进制模式以及十进制和十六进制结果。
输入
十进制(可选负数,如 -8)或无符号 0x-hex(如 0xF0)。
要移位的位位置数。≥ 位宽的移位数量限制为完全移位(结果为 0,或负值算术右移时为 -1);负数移位被视为 0。
输出
| Property | Value |
|---|---|
| No data yet | |
使用指南
按位移位计算器将整数的位向左或向右移位,并显示准确的移位前后二进制模式,以及十进制和十六进制结果。为需要准确理解移位操作的任何人而构建 — 学习二进制补码的学生、调试位掩码的开发人员或验证快速乘法/除法技巧的工程师 — 而不仅仅是获得一个数字。
算术移位与逻辑移位
左移(<<)总是以相同的方式工作:位向最高有效位移动,零从右边填充。超过选定位宽的移位位会被丢弃。
右移有两种不同的含义,选择错误是经典的 bug 来源:
- 算术右移(
>>, signed) 保留值的符号。如果数字为负(其最高位为 1),空出的高位用 1 填充,所以结果保持为负 — 与向负无穷大舍入的整数除法相同的规则。这是大多数语言在有符号整数上的>>操作符所做的事情。 - 逻辑右移(
>>>, unsigned) 完全忽略符号。空出的高位始终用 0 填充,所以被移位的负数变成一个很大的正数。当你将值视为原始位模式而不是有符号数量时,这是正确的选择 — 例如从打包的像素提取颜色通道。
因为差异仅在负数上出现,很容易在正值上测试正确,然后在生产中惊喜。此计算器让你在相同输入上切换两者,以准确看到它们的分歧。
使用方法
- 输入数值 — 十进制整数(允许负数,如
-8)或无符号 hex 字面量如0xF0。 - 输入移位数量 — 要移位多少个位位置。
- 选择移位方向:左移、算术(有符号)右移或逻辑(无符号)右移。
- 选择位宽 — 8、16、32 或 64 位。这决定了你的值如何填充以及位从哪里落出边缘;同样的十进制值根据你选择的宽度可能不同地移位。
结果表显示填充到你选择的宽度的原始值的二进制模式、移位后的二进制模式、十进制结果和 hex 结果 — 当你更改任何字段时实时更新。
FAQ
如果移位数量大于位宽会怎样? 结果是将每个原始位移出时得到的结果:左移和逻辑右移为 0,算术右移为 0 或 -1(所有位设置),取决于值是非负的还是负的。
负移位数量会怎样? 它被视为 0 — 值未改变地通过。
为什么像 0xF0 这样的 hex 输入与十进制 240 移位方式不同?
不是 — 0xF0 和 240 是相同的值。当你以二进制/hex 术语而不是十进制思考时,hex 输入只是输入准确位模式的更便利方式。
为什么我的负数变成了一个巨大的正数? 你可能对负值使用了逻辑(无符号)右移。这是预期的:逻辑移位没有符号的概念,所以它用 0 填充而不是保留符号位。如果你希望符号被保留,请切换到算术右移。
这与通用按位计算器相同吗? 不是 — 按位计算器处理 AND/OR/XOR/NOT 加上一对数字的移位。此工具专门用于探索移位行为:它添加了位宽选择器和完整的前后二进制读出,以便你可以准确看到哪些位移动了、哪些位落出以及哪些位被填充。
隐私
所有计算完全在你的浏览器中运行。你的输入值永远不会被发送到服务器。
在代码中使用
REST API
curl -X POST https://api.iotools.cloud/v1/tool/bitwise-shift-calculator \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"value": "5",
"shiftAmount": "2",
"shiftDirection": "left",
"bitWidth": "8"
}'替换成您账户中的密钥。工具的字段即为请求体——没有额外包装。
让 AI 代理执行
Use the IOTools `bitwise-shift-calculator` tool (Bitwise Shift Calculator) on this input:
YOUR_INPUT_HERE将此粘贴给任何已连接 IOTools MCP 服务器的代理,再加上您的输入内容。
| 每次调用费用 | 5 积分起 |
|---|