Command Palette

Search for a command to run...

二进制计算器:在任何基数中添加、减去和按位数学

二进制计算器:在任何基数中添加、减去和按位数学

T
Toolz Team
|Aug 23, 2026|15 最小读数

二进制和十六进制 合集的一部分

Bug教我尊重位宽第一个是权限标志,它不断清除自己,我正在OR一个位掩码成一个整数列,并且每隔那么频繁地整个字段重置,原因是一看到就尴尬了:我推理位就像他们住在32个插槽,但是值已经被拓宽了,上游某个地方的一个流浪NOT翻转了我从未占用的位,我坐下来用计算器修复它,它向我展示了实际位在实际宽度,而不是我语言打印的整洁小数本指南是关于那个习惯的,使用 二进制计算器 在 toolz。dev 上,以及为什么进行按位数学计算,您可以同时看到每个底数,可以节省猜测时间。

TL;博士: 二进制计算器对用二进制、八进制、十进制或十六进制写成的整数执行算术(加、减、乘、除)和按位运算(AND、OR、XOR、NOT、shifts),并一次显示所有四个基数的结果。算术在任何大小下都是精确的;按位运算取决于所选的位宽。 二进制计算器 完全在您的浏览器中执行这两项操作,并报告按位结果的签名和未签名读数。

什么是二进制计算器?

二进制计算器是一种以二进制为基数的整数进行操作的工具,但有用的完全不限于二进制。您选择您正在思考的二进制、八进制、十进制或十六进制基数,键入您的数字,选择操作,然后阅读答案。好的数据表明每个基数中的答案同时存在,因此您永远不会单独运行转换为理智 - 检查您得到的内容。

1个重要的原因在于,低级工作不断地在基数之间交叉,一个颜色是十六进制,一个权限掩码在你的头部是二进制的,但在数据库中是十进制的,一个网络值在一个配置中是八进制的,在另一个配置中是十进制的,在一个地方进行数学计算,所有的表示都可见,它消除了整类转录错误,你不是将一个十六进制值复制到十进制计算器中,希望你先正确地转换它。

Toolz。dev上流很短选择输入基数键入第一个值选择一个操作键入第二个值结果一起以二进制,八进制,十进制和十六进制显示,对于按位操作,它还显示签名读数和您选择的宽度的位布局。

它支持哪些操作?

2个族,而保持它们是整局,算术运算是加减乘除和模,这些作用于真数值,所以它们表现得像普通数学,不关心位宽除返回整数商并报告任意余数,而模仅返回余数,这是人们最常向后得到的区别。

Bitwise操作是AND, OR, XOR, NAND, NOR, XNOR, NOT, 左右移位, 这些作用在一个固定寄存器内部的原始位, 所以他们的答案完全取决于那个寄存器有多宽, AND, OR, 和XOR是日常的三个:AND掩码位关闭, OR设置位打开, XOR切换它们, 否定的形式, NAND, NOR, 和XNOR, 是他们在宽度内的补码。NOT翻转每一位。移位将整个模式向左或向右移动多个位置, 掉落从末端掉落的位。

以下是我在决定想要哪种模型时使用的快速心理模型:

操作 符号 家庭 典型用途
加/减 + / − 算术 普通整数数学,任意大小
乘以/除 ×/÷ 算术 司报告商和余数
模数 模组 算术 仅剩余,例如环绕式索引
& 按位 掩模咬掉,测试标志
| 按位 设置标志,组合面具
异或 ^ 按位 切换位、廉价平价和掉期
不是 ~ 按位 倒置宽度内的每一位
向左/向右移动 << />> 按位 乘以或除以 2 的幂,包字段

为什么我需要选择一点宽度?

这是让所有新手都陷入按位数学的问题,也是计算器最固执己见的问题。算术无论大小都有明显的答案:无论你用字节想象还是用 64 位字想象,五加三就是八。但按位 NOT 在知道存在多少位之前根本没有答案。五的 NOT 是 "每一位翻转,"结果取决于是否有八位或六十四位要翻转。

Shifts 与另一个方向具有相同的依赖关系,将一个值移得足够远,位从顶部边缘行进,它们是否消失或包裹取决于寄存器大小,C、Java、Go 或 Rust 中的固定宽度整数类型通过定义前面的宽度来回答:a uint8 是八位,a uint32 是三十二,并且每个按位操作都发生在那个框内,计算器通过让你选择8,16,32或64位来精确地镜像,因此结果与你的实际代码将产生什么相匹配,而不是理想化的无限宽度抽象。

选择错误的宽度不是舍入误差,而是不同的答案。五的 NOT 是八位中的 250 和三十二位中的 4294967290。两者的宽度都是正确的,而另一者的宽度也不正确。养成设置宽度以匹配数据类型的习惯是这个工具鼓励的最有用的纪律。

Two's补码是如何在结果中显现出来的?

几乎每个处理器都表示有符号整数 二's 互补的,并且计算器遵循相同的约定,因此它的输出与您的硬件相匹配。在两个's补码中,寄存器的顶部位带有负权重,因此如果您将其视为无符号,则八位模式11111010读取为250,如果您将顶部位读取为符号,则读取为−6。

这就是为什么该工具会报告两个读数以获得按位结果。当您在八位中的五位上运行 NOT 时,您会得到位模式 11111010。计算器显示无符号值 250、有符号值 −6 和二进制布局,因此您可以看到它们是相同的位以两种方式解释的。当值在代码中的有符号类型和无符号类型之间交叉时,双读取正是您所需要的,这是 "impossible" 的经典来源日志中出现的数字。

算术结果在负值时遵循相同的规则。从五中减去十二,真实答案为−7,计算器以小数形式显示,带有负号,而其二进制、八进制和十六进制形式使用您选择的宽度内的两个's-补码模式,八位中的11111001。并排看到负值及其位模式是"符号的抽象思想,只是最上面的位"最后点击。

如何手工添加或减去二进制数,并在此处检查?

二进制加法遵循与十进制相同的进位规则,字母表较小。零加零为零,零加一为一,一加一为零进位一,一加一加进位一进位一。因此 1010 加 1100 从右侧逐列工作:0+0 为 0,1+0 为 1,0+1 为 1,1+1 为 0 进位 1,进位变为前导位,给出 10110,即十进制中的 22。将 that 输入计算器,一次在每个基数中确认它,这就是我重新学习面试或教给某人时检查手算的方法。

减法是 two's 补数赚取其保留的地方,计算机不是跨列借用,而是通过加负数减法,负数是通过反转位加一来形成的,你很少需要手工做到这一点,但它解释了为什么计算器可以干净地减入负域:5减12变成5加上 two's-12 的补数,结果就是上面描述的−7 模式,如果你想在基数之间移动单个值,而不需要对其进行任何数学计算,则 数值基数转换器 是配套工具,并且 二进制翻译 处理将文本转换为位而不是进行算术的情况。

按位操作何时真正重要?

比初学者预期的更频繁,并且在不明显的地方&quot;低电平。&quot;权限系统是经典案例:一组标志打包成一个整数,你OR授予权限,AND带补码撤销,AND测试一个特征切换,Unix文件模式,硬件寄存器地图都使用相同的模式,如果你曾经看到过像0o755这样的值或者定义为的常数 1 << 3,你遇到了位打包。

XOR 出现在廉价的花招和真实的算法中:切换一点,计算奇偶校验,经典的交换-无温度。Shifts 乘以二次方比一般乘法快得多,它们将几个小字段打包成一个单词,这就是颜色值、网络标头和紧凑的序列化格式保持小巧的方式。我将这些不断构建的跨堆栈击中,从存储角色标志作为位掩码的 Laravel API 到从打包整数读取 RGBA 的 React 画布。了解操作是一项小投资,无处不在地回报,我写了关于这些如何在其中适合更广泛的套件 开发人员生产力工具 片。

的微妙故障是使一个可见的计算器值得使用的原因,在错误的宽度下应用的掩码会默默地保留或丢弃你不打算使用的位,假设32位在64处表现不同的位移,一个有符号值与一个无符号掩码进行AND,产生一个数字,在你看到两个&#39;s-补码位之前,看起来不可能。在你调整宽度时观察位布局的变化,将那些来自神秘的错误变成明显的错误。

这里也有教学角度。当我向新人解释位掩码时,十进制数是没有用的:12 AND 10 being 8 毫无意义,直到你排列 1100 和 1010 并观看 AND 只保留两者都是 1 的列。因为计算器显示十进制、八进制和十六进制旁边的二进制布局,它为您做那个对齐,操作不再是记忆的规则,而是成为您可以看到的东西。对于移位也是如此,其中显示左移一位将值加倍,同时滑动每一位左列将算术意义以单个数字永远无法实现的方式连接到位级机制。

有哪些限制?我的数据是否私密?

算术方面实际上没有大小限制,计算器使用JavaScript&#39;s 大英特中标准化的任意精度整数类型 ECMAScript因此,将数十位数字相加或相乘可以保持精确,而不会出现静音溢出。这比基于普通浮点数构建的计算器具有真正的优势,因为普通浮点数的精度会损失超过大约十五位数字,并且根本无法准确表示大整数。

Bitwise 侧故意以你选择的宽度为界,因为那是点:固定宽度操作只在固定寄存器内部才有意义,如果你输入一个大于宽度可以容纳的值,计算器会将其缩减到该宽度并警告你,因此截断永远不会默默地以一个理智的最大值封顶,因此一个失控的移位量无法挂起页面。

On privacy, everything run in your browser。nothing you typed is uploaded, logged, or stored, and the tool keep working if you disconnect from internet after the page loads。that more than it sounds: the values people run through a bitwise calculator are often enercise maskes, tokens, or hardware address from systems they relaving not paste into a server they do not control。if you care about which tools keep your data on your machine, the 在线工具中的数据隐私 guide 涵盖了如何从那些手机回家的人那里告诉客户端工具。对于邻近的低级工作, IEEE 754 转换器ASCII 表 完善布景。

常见问题

如何添加两个二进制数?

置输入基数为二进制,键入第一个数字,选择Add,键入第二个数字,读取结果,例如1010加1100就是10110,工具还显示为十进制22,八进制26,十六进制16,算术在任何长度上都是精确的。

算术运算和按位运算有什么区别?

算(加、减、乘、除、模)作用于真数值,与位宽无关,按位运算(AND、OR、XOR、NOT、shifts)作用于固定宽度寄存器内的原始位,因此它们的结果取决于你选择的是8、16、32还是64位。

为什么我需要选择一点宽度?

NOT 和 shift 操作只有在已知寄存器大小后才有定义的答案,因为它们取决于哪些位存在,哪些位从末尾掉落。选择 8、16、32 或 64 位使计算器匹配特定整数类型在真实编程语言中的行为方式。

计算器如何处理负面结果?

负算术结果以十进制减号表示,其二进制、八进制和十六进制形式在选定的宽度内使用 two&#39;s-补码。对于按位结果,工具同时报告无符号值和有符号 two&#39;s-补码值。

我可以混合基数,例如将十六进制数添加到十进制数?

2个操作数都是在你选择的单基中读取的,所以不能在一个计算中混合基,要组合一个十六进制和一个十进制值,先转换其中一个,然后在同一个基中输入两个结果,结果总是显示在所有4个基中。

当我除以时计算器会做什么?

Division 返回整数商,如果 division 不精确,工具会将余数报告为注释。要自行获取余数,请使用 Modulo 运算代替,它仅返回余数。

数字可以有多大?

Arithmetic 使用 JavaScript BigInt,因此具有数十位数字的数字在没有溢出的情况下被精确处理。按位操作以所选宽度为界;超过它的值会减少到该宽度,当这种情况发生时,工具会警告您。

我的数据发送到任何地方吗?

No。Every计算在您的浏览器中以JavaScript运行。您输入的任何内容都不会传输,记录或存储,如果页面加载后断开与互联网的连接,该工具将继续工作。


免费尝试自己数学 二进制计算器。它完全在浏览器中处理二进制、八进制、十进制和十六进制的算术和按位运算,上传任何内容。

Comments

0 comments

0/2000 characters

No comments yet. Be the first to share your thoughts!