二进制计算器
执行二进制加法,减法,乘法和除法. 转换二进制和十进制. 免费的数学计算器. 立即获得结果.
二进制数字系统:计算机如何计算
二进制数字系统 (基-2) 仅使用两个数字 - - 0 和 1 - - 称为比特 (二进制数字).每台计算机,智能手机和数字设备都以二进制存储和处理所有信息,因为电路可以可靠地表示两个不同的状态:高电压 (1) 和低电压 (0).
一个二进制数字中的每个位置代表2的次数,从右向左增加:
| 位置 | 2⁷ | 2⁶ | 2⁵ | 2⁴ | 2³ | 2² | 2¹ | 2⁰ |
|---|---|---|---|---|---|---|---|---|
| 价值 | 一百二十八 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
二进制到十进制的转换:通过其位值乘以每位, 并总结所有结果.
一个例子:其他:= 1x128 + 0x64 + 1x32 + 1x16 + 0x8 + 1x4 + 0x2 + 1x1 = 128 + 32 + 16 + 4 + 1 =一百八十一
十进制到二进制的转换:在每一步记录剩余数,然后从下到上读取剩余数.
例如:将181转换为二进制:
- 181 ÷ 2 = 90 剩余的1
- 90 ÷ 2 = 45 剩余0
- 45 ÷ 2 = 22 剩余1
- 22 ÷ 2 = 11 剩余0
- 11 ÷ 2 = 5 剩余1
- 5 ÷ 2 = 2 余数1
- 2 ÷ 2 = 1 余数0
- 1 ÷ 2 = 0 余额1
阅读剩余部分从下到上:其他: ✓
二进制算法:加法,减法和乘法
二进制算法遵循与十进制算法相同的规则, 但运算发生在2而不是10时.
二进制加法规则:0+0=0,0+1=1,1+0=1,1+1=10 (进行1),1+1+1=11 (进行1)
例如:10112+11012 (11+13=24)
1011 + 1101 ------ 11000 年
从右到左工作: 1+1=10 (写0,转载1); 1+0+1=10 (写0,转载1); 0+1+1=10 (写0,转载1); 1+1+1=11 (写1,转载1);最后的转载写1. 结果: 110002 = 24
两个的补数 (二进制减法):计算机使用二的补数表示来处理负数和减数. 为了找到一个数的二的补数:翻转所有位,然后加上1.
例如: -13 在 8 位二的补充: +13 = 000011012 -> 翻转所有位 -> 111100102 -> 添加1 ->111100112 其他
这使得减去可以作为加法进行: 20 - 13 = 20 + (-13).
二进制乘法是优雅的:每个部分乘积要么是0 (乘以0),要么是数字本身 (乘以1),向左移动. 例: 10112 x 1012 (11 x 5 = 55):
1011 × 101 ----- 1011 (1011 × 1) 0000 (1011 × 0,已移动) 1011 (1011 × 1,已移动两次) ------- 1101112 = 55
计算中的二进制:比特,字节和数据大小
对于任何处理计算机,存储或网络速度的人来说,了解二进制单位是必不可少的:
| 单位 | 大小 | 最大值 (没有签名) | 常见使用 |
|---|---|---|---|
| 一点点 | 一个二进制数字 | 1 | 布尔标志,单个二进制值 |
| 吃一口 | 四个比特 | 15 (六边形:F) | 一个十六进制数字 |
| 字节 | 8 位 | 255 其他 | 单个字符 (ASCII),颜色通道 |
| 一个字 | 16位的 | 六万五百三十五 | 传统的16位系统,Unicode基础 |
| 双字 (DWORD) | 三十二位 | 4,294,967,295 年 | 32位整数,IPv4地址 |
| 四个字 (QWORD) | 64位的 | 18,446,744,073,709,551,615 年的 | 现代整数,指针,时间 |
颜色值:网络颜色使用24位RGB (每通道8位). #FF5733 = R:255, G:87, B:51. 每个8位通道可以表示256种阴影 (0 - 255). 总可能的颜色:2563 =一万六千七百七十七个(大约1670万).
在Unix/Linux中的文件权限:rwxr-xr-- = 111 101 100 在二进制中 = 7, 5, 4 在八进制中 = chmod 754. 每组3位代表读 (r=4),写 (w=2) 和执行 (x=1) 权限为所有者,组和其他人.
比特式运算及其应用
比特式操作是对整数中的单个比特进行操作的.它们对低级编程,密码学,网络编程和性能关键代码至关重要.
| 运行情况 | 标志 | 行为 | 一个例子 |
|---|---|---|---|
| 和 | & | 如果 BOTH 位是 1 | 1010 和 1100 = 1000 |
| OR | | | 如果 EITHER位为1 | 一千一百等于一千一百一十 |
| 其他 | ^ | 如果位数是DIFFERENT | 1010^1100 = 0110 在 |
| 没有 | ~ | 翻转所有位 | ~1010 = 0101 |
| 转向左侧 | << | 移位到左 (x2每一个移位) | 1011 << 1 = 10110 (x2) 在 |
| 向右转移 | >> | 向右移位 (每次移位分为2) | 1011 >> 1 = 0101 (÷2) 在 |
实际使用:
- 位掩盖:检查是否设置了一个特定的位:
if (flags & 0b0100) { ... }-- 检查是否比特2等于1. - 一些设置:
flags = flags | 0b0100-- 不管当前值如何, 设置比特2为1. - 清理一点:
flags = flags & ~0b0100-- 清除了比特2到0. - 快速乘法/乘以2的乘法:
n << 3= n × 8;n >> 2= n ÷ 4. 比特转移是CPU级操作,比乘法快得多. - 检查偶数/奇数:
if (n & 1) { /* odd */ }-- 任何奇数的最后一个位总是1.
数字系统比较:二进制,八进制,十进制,十六进制
计算机科学使用四种数字系统,每个系统适合不同的环境:
| 系统 | 基础 | 数字 | 常见使用 |
|---|---|---|---|
| 二进制 (基础-2) | 2 | 一个 | 处理器操作,存储,逻辑 |
| 八位数 (基-8) | 8 | 0 - 7 年 | Unix 文件权限,旧系统 |
| 十进制 (基数为10) | 10 | 0 - 9 年 | 人类可读数 |
| 十六进制 (基-16) | 16 | 0 - 9, A - F 其他 | 存储地址,颜色代码,机器代码 |
快速转换:二进制六进制(4个二进制数字=1个六进制数字):
| 二进制 | 一个魔鬼 | 十进制 | 二进制 | 一个魔鬼 | 十进制 |
|---|---|---|---|---|---|
| 没有 0000 | 0 | 0 | 一千个 | 8 | 8 |
| 0001 年 | 1 | 1 | 一百零一 | 9 | 9 |
| 0010 年 | 2 | 2 | 1010 年 | A | 10 |
| 时间0011 | 3 | 3 | 1011 年 | B | 11 |
| 0100 其他 | 4 | 4 | 一百一十 | C | 12 |
| 0101 年 | 5 | 5 | 一百一十一 | D | 13 |
| 0110 年 | 6 | 6 | 1110 其他 | E | 14 |
| 一百一十一 | 7 | 7 | 一百一十一 | F | 15 |
这种4位分组使得六进制非常有用,作为对二进制数据的紧 符号:32位值11001010 00111111 10110101 00001100可以更容易地写成CA3FB50C.
网络中的二进制:IP地址和子网面具
了解二进制对网络工程至关重要, 因为IPv4地址基本上是32位的二进制数字,
一个IPv4地址192.168.1.100 其他是 32 位二进制值的人类可读符号:
11000000.10101000.00000001.01100100
A 副网面罩确定地址的哪部分识别网络,哪部分识别主机.二进制中的 255.255.255.0 掩码是:
11111111.11111111.11111111.00000000
IP 地址和子网面罩的位式 AND 给出了网络地址:
| 组件 | 十进制 | 二进制 |
|---|---|---|
| IP 地址 | 192.168.1.100 其他 | 11000000.10101000.00000001.01100100 其他 其他 |
| 副网面罩 | 其他: | 1111111111111111111111111111 |
| 网络 (和) | 192.168.1.0 其他 | 11000000.10101000.00000001.00000000 年 月 日 |
CIDR符号 (例如, /24) 告诉你子网面罩中有多少头1位. /24面罩有24个接着8个零,允许每个子网28 - 2 = 254个可用的主机地址. /16面罩允许65,534个主机.网络工程师每天使用二进制思维数学来规划子网,计算广播地址和解决路由问题.
加密和安全中的二进制
现代加密算法完全在二进制水平上运行,通过XOR组合,位移和替换操作来操纵单个位.理解二进制是了解数字安全如何工作的门户.
XOR加密 (现代密码的基础):XOR有一个独特的属性 - - 用同一个密钥应用它两次会返回原始值:A K K = A. 这使得XOR成为流密码和一次性 的基础.
例如:用密钥10110010加密字节01001101 (ASCII中的字母"M"):
- 纯文本: 01001101
- 关键字:10110010
- XOR (加密): 11111111
- 再次使用相同密钥 (解密):01001101 ="M"
现代加密中的密钥大小:AES-128使用128位密钥,这意味着有2128~3.4×1038个可能的密钥 - - 超过可观测宇宙中的原子数量.AES-256使用256位密钥,具有2256个可能性.即使是最快的超级计算机也无法强制使用这些密钥空间.每一个额外的比特都会使搜索空间增加一倍,这就是为什么密钥长度在密码学中具有指数意义.
像SHA-256这样的哈希函数从任何输入中产生256位 (32字节) 的二进制输出.即使输入中的单个位变化也会产生完全不同的哈希 - - 这种称为"雪崩效应"的特性使得哈希对于验证数据完整性,存储密码和支持区块链技术非常有用.
二进制和量子计算:经典计算机使用二进制比特 (0或1),量子计算机使用量子比特,可以同时存在两个状态的叠加. 经典的256位密钥有2256个可能的值,必须连续检查;运行格罗弗的算法的量子计算机可以在√(2256) = 2128个操作中搜索这个空间. 这就是为什么正在开发后量子密码学 - - 创建基于二进制的加密方案,即使对抗量子对手也保持安全.
人们常问的问题
为什么计算机使用二进制数字而不是十进制数字?
电子电路最可靠的只有两个不同的状态:开启 (高电压~1) 和关闭 (低电压~0).表示10个不同的状态的小数值需要更精确的电压控制,并且会更容易受到电噪声的影响.二进制的简单性允许数十亿个晶体管在每秒数十亿次的运行速度可靠地运行.
一个字节能容纳的最大数是多少?
一个字节 (8位) 可以表示 28 = 256 个不同的值.对于无符号的整数: 0 到 255.对于有符号的整数 (二的补数): -128 到 127.在二进制中,最大的无符号字节值是 111111112 = 255;在六进制中,它是 FF.
如何将负数转换为二进制数?
使用二的补充: (1) 将正版本转换为二进制, (2) 翻转所有位 (0->1, 1->0), (3) 添加1. 例: -13在8位: +13 = 000011012,翻转位 = 111100102,添加1 = 111100112. 这就是所有现代计算机存储负整数的方式.
什么是二进制和十六进制之间的区别?
两者都是计算中使用的位置数系统.二进制 (基-2) 仅使用0和1 - - 计算机的母语.十六进制 (基-16) 使用0 - 9和A - F作为二进制的紧 符号 - - 每4个二进制数字对应于1个十六进制数字.十六进制用于内存地址,颜色代码 (#RRGGBB) 和机器代码,因为它比原始二进制更紧 和可读.
比特式运算是用来做什么?
比特式操作 (AND,OR,XOR,NOT,shifts) 操纵整数内的单个比特.常用:比特标志和权限 (Unix chmod),检查偶数/奇数 (n & 1),快速乘法/除法以2的次数 (比特转移),加密算法,哈希函数,CRC错误检测,网络子网面罩和游戏开发 (在单个整数中进行紧 状态存储).
什么是二进制浮点,为什么在编程中0.1+0.2≠0.3?
大多数现代计算机使用IEEE 754二进制浮点,以二进制表示小数分数.就像1/3=0.3333...不能准确地用二进制表示,1/10也不能准确地用二进制表示 (它是一个无限重复的二进制分数).这会导致微小的圆形错误:在大多数语言中,0.1 + 0.2 = 0.30000000000000004.使用整数算法 (用分数,而不是美元) 或小数库进行精确的财务计算.
二进制是如何用于数据存储和文件大小的?
存储量以字节 (8位),千字节 (1,024字节),兆字节 (1,024 KB),千字节 (1,024 MB) 等计. 注意:硬盘驱动器制造商使用SI前 (1 KB = 1,000字节),而操作系统使用二进制前 (1 KiB = 1,024字节),导致在购买存储时出现明显的"缺失空间"差异. 一个1TB驱动器在Windows中显示了~931 GiB,因为1,000,000,000 ÷ 1,073,741,824 ~ 931.
什么是二进制编码十进制 (BCD)?
BCD将每个小数位数字编码为4位二进制组:0=0000,1=0001,...,9=1001.因此,BCD中的小数位93是1001 0011.BCD用于金融系统 (避免浮点圆形错误),数字时钟和显示器 (7段显示器直接解码BCD),以及旧的主机系统.它比纯二进制更少空间效率,但在关键应用中消除了小数到二进制的转换错误.