計算機基礎 | 常見進制與單位簡介 / 表示 / 描述

注:本文為 “進制與常見單位應用” 相關文章合輯

原文為繁體,注意術語描述差異。
略作重排。


進制簡介(二進制、八進制、十進制、十六進制)

發表于 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.pswp.cn/diannao/79813.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/79813.shtml
英文地址,請注明出處:http://en.pswp.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…