數字系統與進制轉換

數字系統

數字邏輯是計算機科學的基礎,它研究的是如何通過邏輯門電路(與門、或門、非門等)實現各種邏輯功能。數字系統則是由數字邏輯電路組成的系統,可以實現各種復雜的運算和控制功能。在計算機科學中,數字邏輯和數字系統是非常重要的基礎知識,它們是構成計算機硬件和軟件的基礎。

數字系統定義了用獨特的符號(數碼)來表示一個數字。在不同的數字系統中,一個數字有不同的表示方法,使用有限的數字符號來表白數字。比如:阿拉伯數字數字系統:0、1、2、3、4、5、6、7、8、9;羅馬數字系統:I II III IV V VI VII... 。數字系統可分為:位置化系統和非位置化系統。

位置化和非位置化數字系統

在位置化數字系統中,數字符號所占據的位置決定了其表示的值。常用的有:十進制、二進制、十六進制和八進制。在該系統中,數字這樣表示:

它的值是:

其中:S是一套符號及,b是底(或基數),b=s符號集中的符號總數,+/-表示數字為正或負。例如:以十進制數字系統為例,則S表示的集合為 S={0,1,2,3,4,5,6,7,8,9},b=10;假設隨便取一個十進制數66,則它的數字表示為 +(66)10 (其中10為下標),只是一般省略+、()和底,直接表示為66,;如果是-66,則“-”符號不能省略。

注意:這些符號不能直接存儲在計算機中,計算機存儲正負數的方式不同。

十進制系統(以10為底)

在十進制系統中,整數(沒有小數部分的整型數字)使我們所熟悉的,我們在日常生活中使用整數。例如:520,它是一個三位數,實際上,它的計算方式為:5×10^2+2×10^1+0乘以10^0,即((10×100)+(2×10)+(0×1))=500+20+0=520。

有時我們需要知道用數碼k表示的十進制整數的最大值,該最大值=10^k-1。例如:k=4時,可以表示的數字最大值為10的4次方-1,即10000-1=9999。

此外,更為廣泛的是實數(帶有小數部分的數字),其指計算方式為:

例如:-66.66的值計算為 -(6×10^1+6×10^0+6×10^-1+6×10^-2),即-(6×10+6×1+6×0.6+6×0.06)=-66.66。

二進制系統(以2為底)

符號集為 S={0,1},底 b=2;該系統中的符號常被稱為二進制數碼或位(位數碼),數據和程序是以二進制模式(即位模式),存儲在計算機中的,這是因為計算機由電子開關制成,它們僅有開和關兩種狀態,1和0分別表示兩種不同的狀態。

同理,二進制系統數值計算方法如下:

例如:(1101.01)2(其中2為底數表示二進制),這樣一個二進制數字要轉換為十進制可以用:1×2^3+1×2^2+0×2^1+1×2^0+0×2^(-1)+1×2^(-2)=8+4+0+1+0+0.25=13.25

有時我們需要知道用數碼k表示的十進制整數的最大值,該最大值=2^k-1。?例如:當k=4時,最大值為(1111)2(其中2為底數表示二進制),其值為15=2^4-1。

十六進制系統(以16為底)

盡管二進制系統用于存儲計算機數據,但是不便于在計算機外部表示數字,因為與十進制相比,二進制符號過長。而十進制不能直接存儲在計算機中,在二進制和十進制數字之間沒有顯然的關系,而且他們之間的轉換也不快捷。為了克服這個問題,發明了兩種位置化系統:十六進制和八進制。

十六進制符號集 S={0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F},其中A,B,C,D,E,F分別表示10、11、12、13、14、15;底為 b=16。可能你會奇怪為什么不用10、11等數字來表示,而用字母來表示?因為在我們的數字系統中符號都是單個的,而且如果用10、11等數字來表示就容易出現歧義,如:1123,這里的11是表示兩個1還是11?因此為了避免這種情況,用字母來表示比較合適。

同理,十六進制系統數值計算方法如下:

用數碼k表示的十六進制整數的最大值,該最大值=2^k-1。?例如:當k=4時,最大值為(FFFF)16(其中16為底數表示十六進制),其值為16^4-1=65535。

八進制系統(以8為底)

符號集為 S={0,1,2,3,4,5,6,7},底 b=8;

同理,八進制系統數值計算方法如下:

?用數碼k表示的八進制整數的最大值,該最大值=8^k-1。?例如:當k=5時,最大值為(77777)8(其中8為底數表示八進制),其值為8^5-1=32767。

二進制、八進制、十六進制轉為十進制

將二進制、八進制、十六進制轉為十進制就是用下面公式:

其中將S替換為相應的符號集,b替換為相應的底數即可。?

例如此時有數字(1010)2(其中2為底數),則代入公式為:1×2^3+0×2^2+1×2^1+0×2^0=8+0+2+0=10

十進制轉為二進制、八進制或十六進制

轉換需要分為兩步,第一步為計算整數部分,第二步為計算小數部分。

首先整數部分計算規則為不斷除以要轉化進制的底數,直到商為0時停止,并且每一步計算之后記錄得到的余數,再將得到的余數倒著寫即可。例如:十進制數9轉換為2進制數的計算過程如下,得到的結果為(1001)2,其中2為底數表示2進制數。

接下里以十進制數172轉換為8進制數為例,轉換結果為254,計算過程如下圖:

接下來是小數部分的轉換,用十進制的小數乘以要轉化的進制的底數部分并取整數正序排列即可,而對于部分無限循環的則可以通過限制取到幾位即停止。例如:十進制數0.625轉換為小數部分計算規則如下:

具體過程為:首先將0.625×2得到結果為1.25,再將整數部分1取出,得到剩下的為0.25,再將0.25×2得到0.5,再將整數部分0取出得到0.5,再將0.5×2得到結果為1.0,此時取出整數部分1之后即可停止計算,因為小數部分為0不管怎么計算乘以任何數都是0;在將取出的整數順序排列即可得到結果,即十進制數0.625轉換為二進制數為0.101。

下面再給出一個例子:將十進制數0.634轉換為8進制數且結果精確到5為小數,結果為0.50446,具體計算過程如下圖:

二進制和八進制相互轉換

每三個二進制數都可以轉換為八進制數中的一位,如下圖

二進制數八進制數
0011
0102
0113
1004
1015
1106
1117

只需要將二進制數每三位排在一起轉換為對應的八進制數字即可,例如:二進制數00011001,可以寫為 000 011 001,轉換為0 3 1,則對應的八進制數為31。

二進制和十六進制相互轉化

每四個二進制數都可以轉換為十六進制數中的一位,如下圖

二進制數十六進制數
00011
00102
00113
01004
01015
01106
01117
10008
10019
1010A
1011B
1100C
1101D
1110E
1111F

只需要將二進制數每四位排在一起轉換為對應的十六進制數字即可,例如:二進制數00011001,可以寫為 0001 1001,轉換為1 9,則對應的八進制數為19。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/42328.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/42328.shtml
英文地址,請注明出處:http://en.pswp.cn/web/42328.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C++ 假設今天是星期日,那么過a^b天之后是星期幾?

題目 假設今天是星期日&#xff0c;那么過a^b天之后是星期幾&#xff1f; 【輸入】 兩個正整數a&#xff0c;b&#xff0c;中間用單個空格隔開。0<a≤100,0<b≤10000。 【輸出】 一個字符串&#xff0c;代表過a^b天之后是星期幾。 其中&#xff0c;Monday是星期一&…

自定義波形圖View,LayoutInflater動態加載控件保存為本地圖片

效果圖: 頁面布局: <?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="…

C#多線程并行計算實例

在C#中實現多線程并行計算可以通過使用 Task 和 Parallel 類來實現。這里給出兩個簡單的示例&#xff0c;一個是使用 Task&#xff0c;另一個是使用 Parallel.ForEach。 使用 Task 進行多線程并行計算 using System; using System.Threading.Tasks;class Program {static voi…

Kubernetes基于helm部署jenkins

Kubernetes基于helm安裝jenkins jenkins支持war包、docker鏡像、系統安裝包、helm安裝等。在Kubernetes上使用Helm安裝Jenkins可以簡化安裝和管理Jenkins的過程。同時借助Kubernetes&#xff0c;jenkins可以實現工作節點的動態調用伸縮&#xff0c;更好的提高資源利用率。通過…

MySQL Innodb存儲引擎中,當頁默認的大小是16K時,頁中最多存放多少行的記錄?

1、題目引入 Innodb存儲引擎是面向行的(row-oriented)&#xff0c;也就是說數據的存放按行進行&#xff0c;每頁存放的行記錄是有硬性定義的&#xff0c;當頁默認的大小是16K時&#xff0c;頁中最多存放多少行的記錄&#xff1f; A、1600 行B、8192 行C、16383 行D、7992 行 …

基于Python協同過濾的旅游景點推薦系統,采用Django框架,MySQL數據存儲,Bootstrap前端,echarts可視化實現

隨著旅游業的迅速發展&#xff0c;個性化旅游推薦系統成為提升用戶體驗和促進旅游市場增長的重要工具。本研究旨在設計并實現一種基于Python協同過濾的旅游景點推薦系統&#xff0c;結合Django框架、MySQL數據庫存儲、Bootstrap前端框架以及echarts數據可視化技術&#xff0c;為…

Flask發布一個及時止損(止盈)服務(二)

生成可視化的止盈止損結果&#xff08;圖片&#xff09; 媽的&#xff0c;還是得用 akshare&#xff0c;還需要指定python版本3.9以上 conda remove -n fonxsys --all conda search pythonconda create -n fonxsys python3.9 conda activate fonxsys python.exe -m pip insta…

【粉絲福利 | 第8期】值得收藏!推薦10個好用的數據血緣工具

?? 寫在前面參與規則&#xff01;&#xff01;&#xff01; ?參與方式&#xff1a;關注博主、點贊、收藏、評論&#xff0c;任意評論&#xff08;每人最多評論三次&#xff09; ??本次送書1~4本【取決于閱讀量&#xff0c;閱讀量越多&#xff0c;送的越多】 目前市面上絕…

數據遷移探索

概念 數據遷移是指將數據從一個計算環境或存儲系統移動到另一個計算環境或存儲系統。 隨著公司業務的發展&#xff0c;出于成本優化、系統升級、分庫分表、整合數據等原因。數據遷移工作在日常工作中會陸續出現。 我們可以將數據遷移分成兩個部分&#xff0c;第一部分是數據…

springboot高職院校畢業生信息管理系統-計算機畢業設計源碼27889

摘 要 基于Java語言開發的高職院校畢業生信息管理系統旨在提供一個便捷、高效的方式來管理畢業生的相關信息。系統包括學生基本信息管理、成績管理、就業信息管理等模塊&#xff0c;通過界面友好、操作簡單的設計&#xff0c;方便管理員快速查詢和更新學生信息。系統還提供數據…

采用前后端分離技術架構+java語言開發的全套產科信息管理系統源碼 可與醫院HIS、LIS、PACS、RIS等系統進行對接

采用前后端分離技術架構java語言開發的全套產科信息管理系統源碼 可與醫院HIS、LIS、PACS、RIS等系統進行對接 什么是產科信息管理系統-建檔管理&#xff1f; 產科信息管理系統建檔管理通過信息技術實現了孕產婦健康信息的電子化、網絡化和智能化管理&#xff0c;提高了醫療服…

Riscv 架構的合規測試

為啥直接關注riscv-arch-test&#xff0c;是因為RISCOF 測試框架使用的是riscv-arch-test 1. The architectural test 架構測試是一個單一的測試&#xff0c;代表了可編譯和運行的最小測試代碼。它是用匯編代碼編寫的&#xff0c;其產品是test signature。一個架構測試可能由…

微信小程序推送消息java版

需求背景 使用springboot2微信小程序推送消息。百度了一下看了一篇文章整體還可以&#xff0c;這里推薦一下。 教程解析 1、微信平臺開通訂閱消息。 2、添加模板。 3、springboot后臺接口開發 微信平臺驗證地址接口開發&#xff0c;然后部署到公網服務器。 4、微信平臺驗…

基于FPGA的數字信號處理(15)--定點數的舍入模式(6)向0取整fix

前言 在之前的文章介紹了定點數為什么需要舍入和幾種常見的舍入模式。今天我們再來看看另外一種舍入模式&#xff1a;向上取整fix。 10進制數的fix fix&#xff1a;也叫 向0取整。它的舍入方式是數據往0的方向&#xff0c;舍入到最近的整數&#xff0c;比如1.75 fix到2&#xf…

Docker技術簡介

Docker是一種開源的容器化平臺&#xff0c;旨在簡化應用程序的創建、部署和運行過程。它通過將應用程序及其所有依賴項打包到一個稱為容器的可移植單元中來實現這一目標。以下是Docker技術的簡介&#xff1a; Docker的核心概念 1、容器&#xff08;Container&#xff09;&…

將WordPress的文章重新排序的3個方法

有效的調整文章顯示順序看開可以更好突出內容&#xff0c;還可以保持網站的新鮮感&#xff0c;今天我將帶您了解三種方法&#xff0c;通過重新排序文章顯著提升網站的吸引力。我們將逐步講解從調整設置到使用插件以及“置頂”文章的每一種方法&#xff0c;確保WordPress 新手也…

Linux將mysql導出

1、基礎導出 要在Linux系統中將MySQL數據庫導出&#xff0c;通常使用mysqldump命令行工具。以下是一個基本的命令示例&#xff0c;用于導出整個數據庫&#xff1a; mysqldump -u username -p database_name > export_filename.sql 其中&#xff1a; username 是你的MySQL用…

利用python進行數據分析 —— python正則表達式(持續更新中!)

文章目錄 利用python進行數據分析 —— python基礎知識進階重點筆記&#xff1a;正則表達式re.match 匹配開頭re.search 全文匹配re.sub 替換刪除re.compile 編譯正則findall 返回列表finditer 返回迭代器re.split 分割返回列表(?P...) 分組匹配正則表達符號、修飾符通配符1 ^…

谷歌上新!最強開源模型Gemma 2,27B媲美LLaMA3 70B,挑戰3140億Grok-1

文章目錄 LMSYS Chatbot Arena&#xff1a;開源模型性能第一Gemma為什么這么強&#xff1f;架構創新對AI安全性的提升 A領域競爭激烈&#xff0c;GPT-4o 和 Claude 3.5 Sonnet 持續發力&#xff0c;谷歌迅速跟進。 谷歌為應對AI競爭所采取的策略&#xff1a;依靠 Gemini 閉源模…

hdu物聯網硬件實驗3 按鍵和中斷

學院 班級 學號 姓名 日期 成績 實驗題目 按鍵和中斷 實驗目的 實現閃燈功能轉換 硬件原理 無 關鍵代碼及注釋 /* Button Turns on and off a light emitting diode(LED) connected to digital pin 13, when pressing a pushbutton attached…