计算机基础 | 常见进制与单位简介 / 表示 / 描述

注:本文为 “进制与常见单位应用” 相关文章合辑

原文为繁体,注意术语描述差异。
略作重排。


进制简介(二进制、八进制、十进制、十六进制)

发表于 2017-01-20 郑中胜

数字系统(Numeral system),又称记数系统,是用来表示“数”的方式。常依以下方式分类:

  • 进位制:十进位、二进位、八进位、十六进位等
  • 写法:中文数字、阿拉伯数字、罗马数字等

简介

十进制(Decimal)

人类最常使用的数字系统是十进制(Decimal, Dec)。它以“10”作为进位基底(base),逢十进一,因此又称为 base-ten 或 base 10。

Decimal

六十进制(Sexagesimal)

六十进制(Sexagesimal)多用于表示时间、角度等,如“一小时为 60 分钟,一分钟为 60 秒”,又称为 base 60。

二进制(Binary)

在计算机硬件中,指令以一连串“高”与“低”的电子信号表示。当电压足够时,呈现“ON”;电压不足时,呈现“OFF”,也可用数字表示。即以 2 为基底的数,其中 0(关)表示负电荷(negative charge),1(开)表示正电荷(positive charge)。

计算机的资料以二进制数(Binary Digit)保存,称为位元(bit)。二进制的单个位数(digit)是计算机的最基本单位。二进制(Binary)是本文的重点,也称为 b a s e 2 base\ 2 base 2

让电脑硬件直接辨识、执行且符合指令格式(instruction format)的二进制指令集,称为机器语言(machine language)。

例如:

  • 十进制的 9487 9487 9487
  • 二进制表示为:“ 10010100001111 10010100001111 10010100001111”,
  • 最左边的位数称为最高有效位元(Most Significant Bit, MSB),
  • 最右边的位数称为最低有效位元(Least Significant Bit, LSB)。

MSB and LSB

八进制(Octal)与十六进制(Hexadecimal)

不幸的是,二进制(Binary)极难阅读。为了便于使用和沟通,需要找到更合适的进位制。几乎所有计算机的资料大小都是 4 位元的倍数,且相对于十进制,二进制与十六进制(Hexadecimal, Hex)或八进制(Octal, Oct)的转换更加直观方便。因此,Hex 和 Oct 被广泛应用。

例如:

  • 十进制中的“ 9487 9487 9487”这个数字,
  • 二进制需表示为:“ 10010100001111 10010100001111 10010100001111”,
  • 八进制为:“ 22417 22417 22417”,
  • 十六进制为:“ 250 F 250F 250F”。
八进制(Octal)

八进制(Oct), b a s e 8 base\ 8 base 8,不如十六进制(Hex)使用频繁,但在许多领域及场合仍会出现,由以下数字表示,逢八进制:

Octal

(ex: 0、1、2、3、4、5、6、7、10、11、12、13、14、15、16、17、20…)

十六进制(Hexadecimal)

十六进制(Hex), b a s e 16 base\ 16 base 16,是资讯领域用得最频繁的进制之一(例如:内存倾印 memory dump、HTML 或 CSS 的色码)。值得注意的是,其由以下数字及字母表示,逢十六进制:

Hexadecimal

(ex: 0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F、10、11、12、13、14、15、16、17、18、19、1A、1B、1C、1D、1E、1F、20…)(A~F 可为大小写)

务必注意:9 之后是“A”,而非“10”!

: HTML 为用于建立网页的标记语言,CSS 则为阶层式样式表。

表示法

如果每次都这样写,未免过于繁琐:

  • 十进制的:“ 9487 9487 9487”,
  • 二进制表示为:“ 10010100001111 10010100001111 10010100001111”,
  • 八进制:“ 22417 22417 22417”,
  • 十六进制:“ 250 F 250F 250F”。

用英文表示似乎也并无改善:

  • Decimal:“ 9487 9487 9487”,
  • Binary:“ 10010100001111 10010100001111 10010100001111”,
  • Octal:“ 22417 22417 22417”,
  • Hex:“ 250 F 250F 250F”。

下标法

为了方便书写,通常使用下标表示法,即在数字的右下角加上当前的进制。为更清晰,可先加上小括弧,再加下标。

例如:

948 7 10 = ( 10010100001111 ) 2 = ( 22417 ) 8 = ( 250 F ) 16 9487_{10} = (10010100001111)_2 = (22417)_8 = (250F)_{16} 948710=(10010100001111)2=(22417)8=(250F)16

这种方法虽然方便书写,但在实际开发中仍不便于使用。因此,不同的操作系统、编程语言、应用领域等,其表示方法不尽相同,以下举几个例子。

首字法

顾名思义,在数字后方加上其进制的英文首字。

  • 八进制(oct):即加上小写“o”或大写“O”(ex: 22417 o 22417o 22417o),但其与数字 0 过于相似,因此较少使用。
  • 十六进制(hex):即加上小写“h”或大写“H”(ex: 250 F h 250Fh 250Fh)。

前缀法

在数字前加上前缀字,借此辨认进制,常用于各种编程语言。

  • 八进制(oct):时常会以数字“0”作为前缀,但容易与十进制(dec)产生混淆,实际使用较少。
  • 十六进制(Hex):则以“0X”作为前缀。

例如,常见的编程语言如 C/C++、Java、Python 等,皆使用字首“0x”来表示十六进制(ex: 0 x 7 f f f 54 b 6 b a b 8 0x7fff54b6bab8 0x7fff54b6bab8)。

编程示例(Java):

public class Main {public static void main(String[] args) {int dec = 9487; // 十进制int binary = 0b10010100001111; // 二进制 前缀表示法 0bint binary2 = 0b10_0101_0000_1111; // 二进制 前缀表示法二 0b(Java 7 后可使用“底线”帮助阅读,称为 Underscores in Numeric Literals)int oct = 022417; // 八进制 前缀表示法 0(不建议使用)int hex = 0x250F; // 十六进制 前缀表示法 0xSystem.out.println("十进制: " + dec);System.out.println("二进制 前缀表示法: " + binary);System.out.println("二进制 前缀表示法二: " + binary2);System.out.println("八进制 前缀表示法: " + oct);System.out.println("十六进制 前缀表示法: " + hex);}
}/** Result:** 十进制: 9487* 二进制 前缀表示法: 9487* 二进制 前缀表示法二: 9487* 八进制 前缀表示法: 9487* 十六进制 前缀表示法: 9487**/

其他例子包括:

  • CSS 颜色的 hex 色码,会在前方加上“#”(ex: #E91E63),
  • URL 中使用的百分比编码,会在前方加上“%”(ex: %20 表示空格)。

总结

进制是每位开发者必备的基本功,本篇仅对进制进行了粗略介绍,尚未提及转换、负数、运算等内容,日后有空再补上。

最后,附上一张进制转换表供参考:

十进制二进制八进制十六进制
0000000
1000111
2001022
3001133
4010044
5010155
6011066
7011177
81000108
91001119
10101012A
11101113B
12110014C
13110115D
14111016E
15111117F
16100002010

电脑常见单位:bit、bps、byte、octet、word、KB、KiB…

发表于 2017-01-30 郑中胜

位元(Bit)

计算机的资料以二进制数(Binary Digit)保存,称为位元(bit)。一个位元(bit)可以包含“0”“1”这两个数值,是计算机的最基本资料单位。

位元/秒(bps)

位元/秒(bps)意指 bit per second,位元速率经常在电信领域用作连线速度、传输速度(例如网速、USB)。

  • 1 Kbps = 1 0 3 10^3 103 bit/s = 每秒传输 1,000 bit
  • 1 Mbps = 1 0 6 10^6 106 bit/s = 每秒传输 1,000,000 bit
  • 1 Gbps = 1 0 9 10^9 109 bit/s = 每秒传输 1,000,000,000 bit

字节(Byte)

字节(byte),又称字节,为 8 = 2 3 8 = 2^3 8=23 个位元,是大部分计算机架构(architecture)中的定址单位(Byte addressing)。因此,有些计算机没有搬移一个“位元”的指令,但至少有搬移一个字节的指令。

Octet

Octet 为 8 = 2 3 8 = 2^3 8=23 个位元。虽然与字节(byte)相同,但 byte 过去作为储存大小单位,被广泛地使用于计算机领域,却无一致的定义。因此,现今许多计算机架构、网络协定(如 RFC5234)中,都会使用 Octet 来精准地表示 8 位元,避免造成误解。

字组(Word)

字组(word),又称字元组(注意:不同于字节 byte),并无规范大小。它是计算机架构中设计处理器(CPU)时处理资料的自然单位,是影响计算机设计的重要因素。一个字组(word)由一或多个位元组(byte)组成,其位元(bit)数量称为字组大小(word size)或字宽(word width)、字长(word length),字组大小通常对应于暂存器(register)宽度,常见的有 32 32 32 64 64 64 位元。

字(计算机) - 维基百科,自由的百科全书

KB、KiB、MB、MiB…

尽管许多计算机理论建立在二进制的基础上,许多通讯协定、储存系统等使用十进制作为计量单位(例如:你买了 8G 随身碟,以为是 8 × 1024 8 \times 1024 8×1024 MB,却发现比想象中的小很多)。

为避免混淆,国际单位制(SI)与国际电工委员会(IEC)分别制定了十进制与二进制的规范:

  • 十进制

    • KB(Kilobyte)= 1000 1000 1000 byte = 1 0 3 10^3 103 byte = 千字节
    • MB(Megabyte)= 1000 1000 1000 KB = 1 0 6 10^6 106 byte = 百万字节
    • GB(Gigabyte)= 1000 1000 1000 MB = 1 0 9 10^9 109 byte = 十亿字节
    • TB(Terabyte)= 1000 1000 1000 GB = 1 0 12 10^{12} 1012 byte = 兆字节
    • PB(Petabyte)= 1000 1000 1000 TB = 1 0 15 10^{15} 1015 byte = 千兆字节
    • EB(Exabyte)= 1000 1000 1000 PB = 1 0 18 10^{18} 1018 byte = 艾(艾可萨)字节
  • 二进制

    • KiB(kibibyte)= 1024 1024 1024 byte = 2 10 2^{10} 210 byte
    • MiB(Mebibyte)= 1024 1024 1024 KB = 2 20 2^{20} 220 byte
    • GiB(Gibibyte)= 1024 1024 1024 MB = 2 30 2^{30} 230 byte
    • TiB(Tebibyte)= 1024 1024 1024 GB = 2 40 2^{40} 240 byte
    • PiB(Pebibyte)= 1024 1024 1024 TB = 2 50 2^{50} 250 byte
    • EiB(Exbibyte)= 1024 1024 1024 PB = 2 60 2^{60} 260 byte

然而,长久以来的习惯是:

大家仍时常使用 MB、GB 等,代称 MiB、GiB。

位元速率

常用于传输速率的“位元/秒(bit per second, bps)”,用法依此延伸:

  • KB/s = kilobyte per second = 1 0 3 10^3 103 byte/s
  • KiB/s = kibibyte per second = 2 10 2^{10} 210 byte/s

因此:

  • 10 Mbps = 10 × 1 0 6 10 \times 10^6 10×106 bps = 1.25 MB/s = 1.1920929 MiB/s
  • 100 Mbps = 100 × 1 0 6 100 \times 10^6 100×106 bps = 12.5 MB/s = 11.920929 MiB/s

via:

  • 進制簡介 (二進制、八進制、十進制、十六進制) - 發表於 2017-01-20 鄭 中勝
    https://notfalse.net/14/numeral-system-intro

  • 電腦常見單位: bit、bps、byte、octet、word、KB、KiB… - 發表於 2017-01-30 鄭 中勝
    https://notfalse.net/16/basic-unit

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/79813.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

门面模式与适配器模式

一、门面模式 门面模式:提供统一接口访问子系统接口 1、包含角色 外观系统对外的统一接口子系统类的集合;并不知道外观角色的存在,需要为了配合外观角色而做特殊处理或修改 2、举例 原本开关灯要分别操作各个房间的灯,现在设置总…

SpringBoot Actuator指标收集:Micrometer与Prometheus集成

文章目录 引言一、Spring Boot Actuator基础二、Micrometer简介与集成三、基本指标收集与配置四、自定义业务指标实现五、与Prometheus集成六、实战案例:API性能监控总结 引言 在现代微服务架构中,监控应用程序的健康状况和性能指标变得至关重要。Sprin…

【Android面试八股文】Android应用进程的启动流程【二】

应用进程 1.1 Android系统进程的启动过程: 1、init进程fork出Zygote进程后,Zygote进程会创建一个服务端socket,等待AMS发起socket请求。 同时,由Zygote进程fork出的SystemServer进程会启动各项系统服务,其中就包含了A…

基于Django的AI客服租车分析系统

基于Django的AI客服租车分析系统 【包含内容】 【一】项目提供完整源代码及详细注释 【二】系统设计思路与实现说明 【三】AI智能客服与用户交互指导手册 【技术栈】 ①:系统环境:Python 3.8,Django 4.2框架 ②:开发环境&a…

全同态加密医疗数据分析集python实现

目录 摘要一、前言二、全同态加密与医疗数据分析概述2.1 全同态加密(FHE)简介2.2 医疗数据分析需求三、数据生成与预处理四、系统架构与流程4.1 系统架构图五、核心数学公式六、异步任务调度与(可选)GPU 加速七、PyQt6 GUI 设计八、完整代码实现九、自查测试与总结十、展望…

linux 搭建 dvwa 渗透测试环境

linux 安装 dvwa 1、分为4个部分,搭建dvwa渗透测试环境2、安装centos 7.63、安装apache http server4、安装mysql5、安装php6、运行dvwa 1、分为4个部分,搭建dvwa渗透测试环境 本文基于centos 7.6 搭建 dvwa 渗透测试环境 安装一个linux系统安装apache…

stm32(gpio的四种输出)

其实GPIO这个片上外设的功能: 用于控制IO引脚。 CPU就如同大脑,而这些片上外设就如同四肢一样的关系 如图 —————————————————————————————— OK类比了以上 其实GPIO是有 八种工作模式的 这八种工作模式 因为GPIO是面向IO…

Flask(3): 在Linux系统上部署项目

1 前言 说实话,我并不想接触linux系统,要记住太多的命令。我更习惯windows系统,鼠标点点,只要记住少量的命令就可以了。 但是我选择了python,就注定无法逃避linux系统。虽然python也能在windows上很好的运行&#xff0…

WIN10重启开机不用登录,直接进入桌面

我们个人机不需要登录。 步骤1 置,帐户,登录选项,密码。 输入当前密码后,直接下一步。 再次重启,就会发现不需要密码了。

idea中导入从GitHub上克隆下来的springboot项目解决找不到主类的问题

第一步:删除目录下的.idea和target,然后用idea打开 第二步:如果有需要,idea更换jdk版本 原文链接:https://blog.csdn.net/m0_74036731/article/details/146779040 解决方法(idea中解决)&#…

数字友好战略视域下数字安全核心要素的理论解构与实践路径

本论文聚焦数字友好战略框架下的数字安全核心要素,系统阐述数字安全的理论内涵、战略价值与实践路径。通过多维度分析数字安全在个人、企业与国家层面的作用机制,结合国际法规标准与前沿技术实践,揭示数字安全对构建可持续数字生态的关键支撑…

管理与维护samba服务器

允许 Linux、Unix 系统与 Windows 系统之间进行文件和打印机共享,使得不同操作系统的用户能够方便地访问和共享资源,就像在同一局域网中的 Windows 计算机之间共享资源一样。 server01安装Samba服务器 [rootserver ~]# rpm -qa | grep samba [rootserver…

前端面试每日三题 - Day 8

这是我为准备前端/全栈开发工程师面试整理的第八天每日三题练习,涵盖 JavaScript 闭包与执行上下文、React 性能优化与虚拟 DOM、以及高可用消息队列架构设计。 ✅ 题目 1:深入理解 JavaScript 中的闭包与执行上下文 📘 解析: 闭…

996引擎-拓展变量:物品变量

996引擎-拓展变量:物品变量 测试代码参考资料对于Lua来说,只有能保存数据库的变量才有意义。 至于临时变量,不像TXT那么束手束脚,通常使用Lua变量就能完成。 测试代码 -- 存:物品拓展strfunction (player)local where =

现代Web应用中的高级模糊搜索实现:多条件组合查询与性能优化

搜索功能是现代Web应用中提升用户体验的核心组件。本文将深入探讨如何实现一个高效、灵活的前端模糊搜索解决方案,支持多条件组合查询、精确匹配、模糊匹配以及时间范围筛选。 需求分析与设计目标 核心需求场景 多字段模糊搜索:支持在多个字段中同时搜…

Selenium 实现自动化分页处理与信息提取

Selenium 实现自动化分页处理与信息提取 在 Web 自动化测试或数据抓取场景中,分页处理是一个常见的需求。通过 Selenium,我们可以实现对多页面内容的自动遍历,并从中提取所需的信息。本文将详细介绍如何利用 Selenium 进行自动化分页处理和信…

VS qt 联合开发环境下的多国语言翻译

添加Linguist 文件方法,如同添加类文件的方式,那样: 其他跟QT的一样的流程,另外在main函数里要注册一下, QTextCodec::setCodecForLocale(textCodec); QTranslator translator5; QString trans5 fi…

第十七节:高频开放题-React未来发展趋势

服务端组件(RSC)普及 React Compiler对开发模式的影响 React 未来发展趋势深度解析:服务端组件与编译器的革命性变革 一、服务端组件(RSC)的全面普及与生态重构 1. RSC 的核心理念与技术优势 React Server Component…

Python爬虫实战:获取B站查询数据

一、引言 1.1 研究背景 随着互联网的迅猛发展,视频分享平台积累了海量的数据资源。以 B 站为例,其丰富的视频内容和活跃的用户群体蕴含着巨大的价值。对 B 站搜索数据进行爬取和分析,有助于洞察用户兴趣、市场趋势以及内容创作方向,为市场调研、用户行为分析和内容推荐系…

【Rust 精进之路之第3篇-变量观】`let`, `mut` 与 Shadowing:理解 Rust 的变量绑定哲学

系列: Rust 精进之路:构建可靠、高效软件的底层逻辑 作者: 码觉客 发布日期: 2025-04-20 引言:为数据命名,Rust 的第一道“安全阀” 在上一篇文章中,我们成功搭建了 Rust 开发环境&#xff0c…