乘基取整法是什么_深入理解計算機系統(六):進制間的轉換原理

目錄

1、進制的介紹

2、二進制轉換成其他進制

3、十進制轉換成其他進制

4、十六進制轉換成其他進制

5、總結

上一篇博客我們講解了信息的在計算機中是如何存儲以及如何表示的。但是對于各個進制的轉換只是一筆帶過了,后來作者仔細研究了進制轉換的原理,發現還是挺有感悟的。那么這篇博客就講講進制轉換。

正文:

1、進制的介紹

在講進制之前,我們先看一下數制的定義:用一組固定的數字和一套統一的規則來表示數目的方法稱為數制。

而數制有進位計數制與非進位計數制之分。非進位計數制的數碼表示的數值大小與它在數中的位置無關,這里我們不作過多的介紹。

進位計數制的數碼所表示的數值大小則與它在數中所處的位置有關,常見的有二進制、十進制、十六進制,我們這里也只介紹這三種進制的轉換。

進位計數制的要素:

①、數碼:用來表示進制數的元素。比如二進制數的數碼為:0,1。十進制數的數碼為:0,1,2,3,4,5,6,7,8,9。十六進制數的數碼為:0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F

②、基數:數碼的個數。比如二進制數的基數為2。十進制數的基數為10。十六進制數的基數為 16.

③、位權:數制中每一固定位置對應的單位值稱為位權。例如十進制第2位的位權為10,第3位的位權為100;而二進制第2位的位權為2,第3位的位權為4,對于 N進制數,整數部分第 i位的位權為N^(i-1),而小數部分第j位的位權為N^-j。

那么我們可以說:每個數碼所表示的數值=該數碼值 * 所處位置的位權。上面的內容概括起來可以看一下下面這張圖:

比如十進制數:(123.45)10=1×102+2×101+3×100+4×10-1+5×10-2

二進制數:(1010)2 =l× 23+0 × 22+l× 21+0 × 20=(10)10

十六進制數:(BAD)16 =11× 162+10×161+13×160=(2989)10

2、二進制轉換成其他進制

①、二進制(Binary)——>十進制(Decimal)

訣竅:以小數點為界,整數位從最后一 位(從右向左)開始算,依次列為第0、1、2、3………n,然后將第n位的數(0或1)乘以2的n-1次方,然后相加即可得到整數位的十進制數;小數位則 從左向右開始算,依次列為第1、2、3……..n,然后將第n位的數(0或1)乘以2的-n次方,然后相加即可得到小數位的十進制數(按權相加法)。

例子:將二進制數(10.10101)2轉化為十進制數。

(10.10101)2=(1x21+0x20+1x2-1+0x2-2+1x2-3+0x2-4+1x2-5)10=(2+0+0.5+0+0.125+0+0.03125)10=(2.65625)10

②、二進制(Binary)——>十六進制(Hex)

訣竅:因為每四位二進制數對應一位十六進制數,所以,以小數點為界,整數位則將二進制數從右向左每4位一隔開,不足4位的在左邊用0填補即可;小數位則將二進制數從左向右每4位一隔開,不足4位的在右邊用0填補即可。

例子:將二進制數(10.10101)2轉化為十六進制數。

(10.10101)2=(0010.1010 1000)2=(2.A8)16

3、十進制轉換成其他進制

①、十進制(Decimal)——>二進制(Binary)

訣竅:以小數點為界,整數部分除以2,然后取每次得到的商和余數,用商繼續和2相除,直到商小于2。然后把第一次得到的余數作為二進制的個位,第二次得到的余數作為二進制的十位,依次類推,最后一次得到的小于2的商作為二進制的最高位,這樣由商+余數組成的數字就是轉換后二進制的值(整數部分用除2取余法);小數部分則先乘2,然后獲得運算結果的整數部分,將結果中的小數部分再次乘2,直到小數部分為零。然后把第一次得到的整數部分作為二進制小數的最高位,后續的整數部分依次作為低位,這樣由各整數部分組成的數字就是轉化后二進制小數的值(小數部分用乘2取整法)。

需要說明的是,有些十進制小數無法準確的用二進制進行表達,所以轉換時符合一定的精度即可,這也是為什么計算機的浮點數運算不準確的原因。

例子1:將十進制數(93)10轉換成二進制數。

93/2=46……….1

46/2=23……….0

23/2=11……….1

11/2=5…………1

5/2=2…………...1

2/2=1……………0

(93)10=(1011101)2

例子2:將十進制數(0.3125)10轉換成二進制數。

0.3125x2 = 0 . 625

0.625x2 = 1 .25

0.25x2 = 0 .5

0.5x2 = 1 .0

(0.3125)10=(0.0101)2

②、十進制(Decimal)——>十六進制(Hex)

訣竅:方法同十進制轉化成二進制類似。以小數點為界,整數部分除以16,然后取每次得到的商和余數,用商繼續和16相除,直到商小于16。然后把第一次得到的余數作為十六進制的個位,第二次得到的余數作為十六進制的十位,依次類推,最后一次得到的小于16的商作為十六進制的最高位,這樣由商+余數組成的數字就是轉換后十六進制的值(整數部分用除16取余法); 小數部分則先乘16,然后獲得運算結果的整數部分,將結果中的小數部分再次乘16,直到小數部分為零。然后把第一次得到的整數部分作為十六進制小數的最高位,后續的整數部分依次作為低位,這樣由各整數部分組成的數字就是轉化后十六進制小數的值(小數部分用乘16取整法)。

例子1:將十進制數(93)10轉換成十六進制數。

93/16=5…………13(D)

(93)10=(5D)16

例子2: 將十進制數(0.3125)10轉換成十六進制數。

0.3125x16 = 5 .0

(0.3125)10=(0.5)16

4、十六進制轉換成其他進制

①、十六進制(Hex)——>二進制(Binary)

訣竅:十六進制轉換成二進制與二進制轉換成十六進制相反。每一位十六進制數對應四位二進制數

例子1:將十六進制數(A7)16轉換成二進制數。

(A7)16=(A 7)16=(1010 0111)2=(10100111)2

例子2:將十六進制數(0.D4)16轉換成二進制數。

(0.D4)16=(0. D 4)16=(0. 1101 0100)2=(0.110101)2

②、十六進制(Hex)——>十進制(Decimal)

訣竅:方法同二進制轉換成十進制類似。以 小數點為界,整數位從最后一位(從右向左)開始算,依次列為第0、1、2、3………n,然后將第n位的數(0-9,A-F)乘以16的n-1次方,然后相 加即可得到整數位的十進制數;小數位則從左向右開始算,依次列為第1、2、3……..n,然后將第n位的數(0-9,A-F)乘以16的-n次方,然后相 加即可得到小數位的十進制數(按權相加法)。

例子1:將十六進制數(A7)16轉換成十進制數。

(A7)16=(10x161+7x160)10=(160+7)10=(167)10

例子2:將十六進制數(0.D4)16轉換成十進制數。

(0.D4)16=(0+13x16-1+4x16-2)10=(0+0.8125+0.015625)10=(0.828125)10

5、總結

①. 其他進制轉十進制:將二進制數、十六進制數的各位數字分別乘以各自基數的(N-1)次方,其相加之和便是相應的十進制數,這是按權相加法。

②. 十進制轉其他進制:整數部分用除基取余法,小數部分用乘基取整法,然后將整數與小數部分拼接成一個數作為轉換的最后結果。

③. 二進制轉十六進制:從小數點位置開始,整數部分向左,小數部分向右,每四位二進制為一組用一位十六進制的數字來表示,不足四位的用0補足。

④. 十六進制轉二進制:每一位十六進制對應每四位二進制,不足用0補足。

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

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

相關文章

單例設計模式-雙重檢查

雙重檢查 雙重檢查應用實例 代碼演示: class Singleton{private static volatile Singleton singleton;private Singleton(){}// 提供一個靜態公有方法public static Singleton getInstance() {if (instance null) {synchronized (Singleton.class) {if (instance null) {…

symbian系統開發教程(一)

第一章:Symbian OS簡介作者:謝興 enigma19971hotmail.com---轉載需注明出處 下載word文檔1.1. Symbian系統簡介當前有很多手機運行Symbian OS,數量甚至超出您的想象。到目前為止已經有超過7500 萬、100 多種型號的手機運行Sym…

小談c#數據庫存取圖片的方式

第一種方式 文件夾與數據庫配合 /// <summary>/// 上傳圖片/// </summary>/// <param name"FUSShopURL">FileUpload對象</param>/// <param name"UpladURL">圖片要放到的目錄名稱</param>/// <returns>如果Fi…

c#課程設計簡單題目_《C#項目案例》課程設計題目

1《C#項目案例》課程設計題目一、課程設計的基本目標1、通過本次課程設計&#xff0c;熟練掌握開發語言C#和開發環境——.NET。開發語言的熟練需要通過編寫一定長度的代碼(1000&#xff5e;2000行代碼)才能達到&#xff0c;開發環境的熟練需要反復的程序調試訓練。2、加深對軟件…

筆記吧

map的第一個為關鍵值&#xff0c;只可讀&#xff0c;不可寫。第二個為對應值&#xff1b;vector的消除有很大的困擾&#xff0c;感覺存在很大的局限性&#xff1b;問題——不能夠復雜話&#xff0c;一個問題先從較淺的方面想起&#xff0c;其實在現有基礎和請況下&#xff0c;不…

單例設計模式-靜態內部類

靜態內部類 靜態內部類應用實例 代碼演示 package com.atguigu.principle.singleton.type07;/** * author victor * site https://victorfengming.github.io/ * company XDL * project java_mode * package com.atguigu.principle.singleton.type07 * created 2021-02-02 20…

Symbian系統開發教程(二)

第二章&#xff1a;數據類型與語法 作者&#xff1a;謝興 enigma19971hotmail.com 轉載需注明出處 下載word版本 Symbian系統已經提供了一套已經定義好的內置的數據類型。為了保證你的代碼是編譯器無關的&#xff0c;應當使用下面symbian系統提供的數…

design php 如何使用ant_Ant Design Pro初探—添加面包屑

Ant Design Pro初探—添加面包屑上次咱們說了新建頁面&#xff01;頁面建成了&#xff0c;開始填充頁面 新建面頁面不會的看上一片文章:Ant Design Pro初探—新建頁面首先是需要添加家面包屑&#xff0c;上代碼&#xff1a;import React, { PureComponent } from react;import …

C++主要操作符重載的定義和總結

C中預定義的運算符的操作對象只能是基本數據類型&#xff0c;實際上&#xff0c;對于很多用戶自定義類型&#xff0c;也需要有類似的運算操作。例如&#xff1a; class complex { public: complex(double r0.0,double I0.0){realr;imagI;} void display(); private: do…

原生JS數組去重的幾種方法

有時候我們做項目的時候往往會需要把數組里面一些重復的項去掉&#xff0c;但是原生JS有排序&#xff0c;有篩選等等&#xff0c;但是就是沒有數組去重怎么辦呢&#xff1f;這能怎么辦&#xff0c;自己手動實現嘛。&#xff08;以下代碼直接在原型上添加的的方法&#xff0c;為…

單例設計模式-枚舉

枚舉 枚舉應用實例 代碼演示 package com.atguigu.principle.singleton.type08;/** */ public class SingletonTest08 {public static void main(String[] args) {Singleton instance Singleton.INSTANCE;Singleton instance2 Singleton.INSTANCE;System.out.println(inst…

拋物線交點式公式_拋物線交點式

以下是范文網www zhuodaoren com 分享的6 已知拋物線與軸兩交點在軸同側&#xff0c;它們的距離的平方等于&#xff0c;則的值為( )&#xff0c;希望能幫助到大家!(一)6 已知拋物線與軸兩交點在軸同側&#xff0c;它們的距離的平方等于&#xff0c;則的值為( )函數與一元二次方…

學習的動力

要有自學的意識&#xff0c;這是一個知識不斷更新、不斷涌現的時代&#xff0c;大學里的很多知識是過時的&#xff0c;就算入校時是熱門行業的但很可能四年后畢業找工作時已經變成了夕陽產業&#xff0c;學習是一種能力&#xff0c;但首先是一種態度&#xff0c;一個人想在快速…

java面向對象之父類的引用指向子類的對象

1 package Text; 2 3 public class Job { 4 public void dowork(){ 5 6 } 7 } 1 package Text; 2 3 public class Luosidao extends Job{ 4 public void dowork(){ 5 System.out.println("螺絲刀擰螺絲。。。"); 6 } 7 } 1 packa…

單例模式在JDK應用的源碼分析

單例模式在JDK應用的源碼分析 單例模式在jdk中的源碼分析 在我們JDK中,java.lang.Runtime就是經典的單例模式(惡漢式) 代碼分析Debug源碼代碼說明 public class Runtime {private static Runtime currentRuntime new Runtime();/*** Returns the runtime object associate…

lisp語言cond和if套用_LISP - 決策

決策結構需要程序員指定一個或多個條件由程序進行評估或測試&#xff0c;以及要執行的語句或語句如果條件被確定為true&#xff0c;如果條件被確定為false那么選擇要執行其他語句。下面是在大多數編程語言中一個典型的決策結構的一般形式為&#xff1a;LISP提供了以下類型的決策…

H264基本概念之 宏塊、片和片組

這幾個概念對比音頻信號處理可是全新的&#xff0c;下面簡要介紹一下定義和作用&#xff1a; 1、宏塊&#xff08;Macro Block&#xff09;&#xff1a;一個編碼圖像首先要劃分成多個塊&#xff08;4x4 像素&#xff09;才能進行處理&#xff0c;顯然宏塊應該是整數個塊組成&…

CodeVS 1044 攔截導彈(DP)

題目大意&#xff1a; http://codevs.cn/problem/1044/ 第一問題就是求序列的最長遞減數列的長度&#xff0c;第二問就是求數列的最長遞增序列的長度。 代碼&#xff1a; #include <iostream>using namespace std;int arr[30] {0}; int dp[30] {0}; int mp[30] {0};in…

鏈表(Linked List)之單鏈表

原文地址:傳送門 鏈表(Linked List)介紹 鏈表是有序的列表&#xff0c;但是它在內存中是存儲如下 小結: 鏈表是以節點的方式來存儲,是鏈式存儲 每個節點包含 data 域&#xff0c; next 域&#xff1a;指向下一個節點. 如圖&#xff1a;發現鏈表的各個節點不一定是連續存儲…

有字符csv文件導入matlab_Matlab:如何讀取CSV文件以及如何讀取帶有字符串數據項的CSV文件...

CSV&#xff0c;逗號分開的文件&#xff0c;如果能快速的讀取這些文件中的數據&#xff0c;無疑會幫助我們解決很多問題。1、 只有數據的CSV文件&#xff0c;CSV file that includes only numbers.As an example, create a text file, named as data.csv if you prefer, which …