使用此免费的在线工具轻松将数字在二进制和十进制系统之间转换。即时转换并提供教育可视化。
即时在二进制和十进制数字系统之间转换。
二进制数字仅使用0和1
十进制数字使用数字0-9
在任一字段中输入一个值,以查看另一个字段中的转换结果。
二进制-十进制转换器是任何处理不同数字系统的人的基本工具。二进制(基数-2)和十进制(基数-10)是计算和数学中使用的两种基本数字系统。我们的二进制到十进制转换器允许您即时将数字在这些系统之间进行精确翻译。无论您是学习二进制表示的计算机科学学生,调试代码的程序员,还是处理数字电路的电子爱好者,这个转换器都简化了在二进制和十进制数字格式之间转换的过程,而无需复杂的手动计算。
二进制数字仅由0和1组成,构成了所有数字计算系统的基础,而十进制系统则使用0-9的数字,是我们日常生活中使用的。理解这些系统之间的关系对任何参与计算机科学、编程或数字电子的人来说至关重要。这个工具弥补了这些数字系统之间的差距,使转换变得轻松而无误。
十进制系统是我们的标准数字系统,使用10个数字(0-9)。在这个位置数字系统中,每个数字的位置代表10的一个幂:
例如,十进制数字427表示:
将这些值相加:400 + 20 + 7 = 427
二进制系统仅使用两个数字(0和1)。二进制数字中的每个位置代表2的一个幂:
例如,二进制数字1010表示:
将这些值相加:8 + 0 + 2 + 0 = 10(十进制)
要将二进制数字转换为十进制,请将每个数字乘以其对应的2的幂并求和:
其中:
示例:将二进制1101转换为十进制
要将十进制数字转换为二进制,请重复将数字除以2并记录余数,反向排列:
示例:将十进制25转换为二进制
我们的二进制-十进制转换器旨在直观且用户友好。按照以下简单步骤在二进制和十进制数字之间进行转换:
该转换器还提供了转换过程的可视化解释,向您展示每个转换是如何在数学上进行的。这个教育功能帮助您理解数字系统转换的基本原理。
二进制-十进制转换在许多领域和应用中都是基础:
像192.168.1.1这样的IPv4地址可以表示为二进制:
组合:11000000.10101000.00000001.00000001
虽然二进制和十进制是最常用的数字系统,但其他系统也有重要的应用:
十六进制使用16个数字(0-9和A-F),通常用作更紧凑的方式来表示二进制数据。每个十六进制数字恰好表示4个二进制数字。
示例:二进制1010 1101 = 十六进制AD
八进制使用8个数字(0-7),在计算中历史上非常重要。每个八进制数字恰好表示3个二进制数字。
示例:二进制101 011 = 八进制53
BCD使用固定数量的二进制数字(通常为4)来表示每个十进制数字。它在需要十进制表示的应用中使用,例如数字时钟。
示例:十进制42在BCD中 = 0100 0010
十进制系统在人类历史上一直是主要的数字系统,可能是因为人类有十根手指。十进制计数系统的证据可以追溯到古代文明:
二进制系统有着更近但同样迷人的历史:
以下是各种编程语言中二进制-十进制转换的实现:
1// 二进制到十进制转换
2function binaryToDecimal(binary) {
3 if (!/^[01]+$/.test(binary)) {
4 return "无效的二进制数字";
5 }
6 return parseInt(binary, 2);
7}
8
9// 十进制到二进制转换
10function decimalToBinary(decimal) {
11 if (!/^\d+$/.test(decimal) || decimal < 0) {
12 return "无效的十进制数字";
13 }
14 return Number(decimal).toString(2);
15}
16
17// 示例用法
18console.log(binaryToDecimal("1010")); // 输出:10
19console.log(decimalToBinary("42")); // 输出:101010
20
1# 二进制到十进制转换
2def binary_to_decimal(binary):
3 try:
4 # 检查输入是否仅包含0和1
5 if not all(bit in '01' for bit in binary):
6 return "无效的二进制数字"
7 return int(binary, 2)
8 except ValueError:
9 return "无效的二进制数字"
10
11# 十进制到二进制转换
12def decimal_to_binary(decimal):
13 try:
14 # 检查输入是否为非负整数
15 decimal = int(decimal)
16 if decimal < 0:
17 return "无效的十进制数字"
18 return bin(decimal)[2:] # 去掉'0b'前缀
19 except ValueError:
20 return "无效的十进制数字"
21
22# 示例用法
23print(binary_to_decimal("1010")) # 输出:10
24print(decimal_to_binary("42")) # 输出:101010
25
1public class BinaryDecimalConverter {
2 // 二进制到十进制转换
3 public static int binaryToDecimal(String binary) {
4 if (!binary.matches("[01]+")) {
5 throw new IllegalArgumentException("无效的二进制数字");
6 }
7 return Integer.parseInt(binary, 2);
8 }
9
10 // 十进制到二进制转换
11 public static String decimalToBinary(int decimal) {
12 if (decimal < 0) {
13 throw new IllegalArgumentException("不支持负数");
14 }
15 return Integer.toBinaryString(decimal);
16 }
17
18 public static void main(String[] args) {
19 System.out.println(binaryToDecimal("1010")); // 输出:10
20 System.out.println(decimalToBinary(42)); // 输出:101010
21 }
22}
23
1#include <iostream>
2#include <string>
3#include <cmath>
4#include <regex>
5
6// 二进制到十进制转换
7int binaryToDecimal(const std::string& binary) {
8 // 检查输入是否仅包含0和1
9 if (!std::regex_match(binary, std::regex("[01]+"))) {
10 throw std::invalid_argument("无效的二进制数字");
11 }
12
13 int decimal = 0;
14 for (int i = 0; i < binary.length(); i++) {
15 if (binary[binary.length() - 1 - i] == '1') {
16 decimal += std::pow(2, i);
17 }
18 }
19 return decimal;
20}
21
22// 十进制到二进制转换
23std::string decimalToBinary(int decimal) {
24 if (decimal < 0) {
25 throw std::invalid_argument("不支持负数");
26 }
27
28 if (decimal == 0) {
29 return "0";
30 }
31
32 std::string binary = "";
33 while (decimal > 0) {
34 binary = (decimal % 2 == 0 ? "0" : "1") + binary;
35 decimal /= 2;
36 }
37 return binary;
38}
39
40int main() {
41 std::cout << binaryToDecimal("1010") << std::endl; // 输出:10
42 std::cout << decimalToBinary(42) << std::endl; // 输出:101010
43 return 0;
44}
45
1' 二进制到十进制转换
2Function BinaryToDecimal(binary As String) As Variant
3 ' 检查输入是否仅包含0和1
4 Dim i As Integer
5 For i = 1 To Len(binary)
6 If Mid(binary, i, 1) <> "0" And Mid(binary, i, 1) <> "1" Then
7 BinaryToDecimal = CVErr(xlErrValue)
8 Exit Function
9 End If
10 Next i
11
12 BinaryToDecimal = Application.WorksheetFunction.Bin2Dec(binary)
13End Function
14
15' 十进制到二进制转换
16Function DecimalToBinary(decimal As Long) As String
17 If decimal < 0 Then
18 DecimalToBinary = CVErr(xlErrValue)
19 Exit Function
20 End If
21
22 DecimalToBinary = Application.WorksheetFunction.Dec2Bin(decimal)
23End Function
24
25' 示例用法:
26' =BinaryToDecimal("1010") ' 返回:10
27' =DecimalToBinary(42) ' 返回:101010
28
二进制数字是以基数-2数字系统表示的数字,该系统仅使用两个符号:通常是“0”和“1”。每个数字称为位(binary digit)。二进制数字是数字计算的基础,因为计算机中的所有数据最终都以二进制形式表示。
计算机使用二进制是因为电子元件可以轻松表示两种状态:开/关、高/低电压或磁极。二进制在硬件实现上也更简单,使计算机更可靠和高效。此外,布尔逻辑(与、或、非)与二进制操作完美匹配。
要手动将二进制数字转换为十进制:
例如,二进制1101: 1×8 + 1×4 + 0×2 + 1×1 = 8 + 4 + 0 + 1 = 13
要手动将十进制数字转换为二进制:
例如,十进制13: 13 ÷ 2 = 6 余数 1 6 ÷ 2 = 3 余数 0 3 ÷ 2 = 1 余数 1 1 ÷ 2 = 0 余数 1 从下到上读取:1101
我们当前的实现专注于非负整数,以简化和教育为目的。负数在二进制中通常使用符号位、反码或补码表示,这些是更高级的概念。
该转换器可以处理整数,直到JavaScript的安全整数限制(2^53 - 1),即9,007,199,254,740,991。对于二进制输入,这意味着最多53位。对于极大的数字,需要专门的库。
十进制分数使用二进制分数表示。例如,十进制0.5是二进制0.1(1×2^-1)。这个过程涉及将小数部分乘以2并记录整数部分,直到达到0或开始重复。我们当前的转换器仅关注整数。
常见错误包括:
计算机内存被组织为一系列可寻址的位置。每个位置都有一个唯一的地址,实际上就是一个数字。这些地址在计算机电路中以二进制表示。当程序需要访问内存时,它指定所需位置的二进制地址。
这三者都是位置数字系统,但基数不同。十六进制和八进制通常用作更紧凑的方式来表示二进制数据,每个十六进制数字表示4个二进制数字,每个八进制数字表示3个二进制数字。
Knuth, Donald E. "计算机程序设计的艺术,第二卷:半数字算法。" Addison-Wesley, 1997.
Leibniz, Gottfried Wilhelm. "二进制算术的解释。" Mémoires de l'Académie Royale des Sciences, 1703.
Boole, George. "思维法则的研究。" Dover Publications, 1854(1958年再版)。
Shannon, Claude E. "继电器和开关电路的符号分析。" 美国电气工程师学会会刊,第57卷,第12期,1938年,第713-723页。
Ifrah, Georges. "数字的全球历史:从史前时代到计算机的发明。" Wiley, 2000.
"二进制数字。" 维基百科,维基媒体基金会,https://en.wikipedia.org/wiki/Binary_number. 访问日期:2023年8月15日。
"十进制。" 维基百科,维基媒体基金会,https://en.wikipedia.org/wiki/Decimal. 访问日期:2023年8月15日。
"数字系统转换。" 国家标准与技术研究所,https://www.nist.gov/dads/HTML/numbersysconv.html. 访问日期:2023年8月15日。
现在就尝试我们的二进制-十进制转换器,快速而准确地在二进制和十进制数字系统之间转换。无论您是在学习计算机科学、处理数字电子项目,还是仅仅对计算机如何表示数字感到好奇,我们的工具使转换过程变得简单而富有教育意义。