零基礎學編程之進位轉換基礎

2021-01-08 小楊談樓市

01十進位

十進位(逢10進1)是我們最常用的一種數位進位方式。十進位和二進位可以相互轉換,如下所示:

10進位轉2進位

上圖中,10稱做基數,10^n(10的n次冪)被稱作權,… 10000、1000、100、10、1。

02二進位

二進位(逢2進1),是基數為"2"的進位。計算機使用二進位,是因為計算機設計者發現在複雜電路中,將低電平表示0,高電平表示1,只有兩種電位在通過門電路之後更容易計算。其實用其它進位也可以表示,但是比較麻煩。

二進位的基數為2,權為2^n(2的n次方),……、128、64、32、16、8、4、2 1。

2進位轉16進位

03補碼基礎

關於補碼,有比較有趣的演化過程,假如計算機中使用4位的二進位表示數據,如圖3-1中的a,最多能表示0到15(10進位),後有計算機大佬在此基礎上做了一個細微改動,將所有二進位以1開頭的數(大於7的數)放到0之前:如圖3-1的b,並且規用用這部分8-15對應二進位表示負數-1到-8,這就是4位補碼:如圖3-1的c。

補碼演化

仔細觀察會發現,-1(1111)+1(0001) = 1 0000,捨棄最高位"1"(超出4位),保留最後4位(4個0),則-1(1111)+1(0001) = 0(1 0000)

計算-1+1

同理-8(1000)+7(0111)=-1(1111)。

至此,得出了結論:在封閉的四位運算中(超出4位就丟棄),這種設計和規定是非常合理的。可是,我們又有了疑問:(-1)*(1)=?,會不會和結果就不一樣了?我來算一下:

計算-1*1

結果一樣,(-1)*(-1)= 1即1111 * 1111 = 0001,這種數據運算規則就是補碼運算。

總結:

計算機中正數和負數的關係是取反加一。舉例如:~3+1=-3(~3表示對3取反)補碼運算是封閉的:運算結果保留在補碼範圍內,超範圍就溢出.補碼邊界運算有溢出風險.4位二進位補碼最多能表示2^4(16)個數,數的範圍是-8~78位二進位補碼最多能表示2^8(256)個數,數的範圍是-128~12716位二進位補碼最多能表示2^16(65536)個數,數的範圍是-32768~3276732位二進位補碼最多能表示2^32個數,數的範圍是-2G~2G-1(1G= 1024*1024*1024)當我們知道了計算機中的一個二進位數,比如0000 1111,它的10進位為:

0000 1111 = 2^3+2^2+2^1+2^0 = 15(十進位) // 因為是正數,直接轉換既可

那1111 1001,表示的十進位數是多少?

則計算機中存儲的1111 1001轉換為十進位數是-7。反過來的換算過程如下:

計算機中二進位(轉)十進位:

以0開頭的,直接將2進位轉換為10進位;以1開頭的,需要4步,按位取反->末尾位加1->轉換為十進位->添加負號。十進位數(轉)計算機中二進位數:

正數取原碼,負數按位取反末尾加1。需要注意的是:4位補碼不能表示8。

04Java中的二進位規則

Java內部只有二進位補碼,計算機內部數據以二進位補碼表示。Java內部採用補碼運算,自動發送上溢出(乘法為上溢出)和下溢出(除法為下溢出)。Java內部沒有10進位,但是Java儘量按照人類習慣輸入輸出。補碼的負數,最高位是1,也稱作符號位。

05十六進位

十六進位是二進位制的簡寫,方便專業人員書寫二進位數據。比如一個十進位數1234567890,用十六進位表示就比二進位表示更方便,如下所示:

十六進位的基數為16,權為16^n(16的n次方),...、4096、256、16、1。

十六進位與十進位對照表:

十六進位和其他進位間的轉換:

41(16進位) = 4*(16^1) + 1*(16^0) = 65(10進位) = 0100 0001(2進位)

10進位、2進位、8進位、16進位對照表

相關焦點

  • 16進位顏色表示與RGB色彩模型——零基礎自學網頁製作
    十六進位是什麼?說到"進位",大部分沒有數學基礎的小夥伴會比較陌生,如果您是計算機愛好者,也會對"二進位"耳熟能詳。如果想了解16進位,還需要從我們最常用的10進位說起。10進位的意思,通俗來說就是數數到10就要向前進一位。比如9完了之後是10,11.....如果這樣看您還是不知所云,請看下面講解。
  • 零基礎學Java之數據類型和運算符,第一講:進位及其轉換
    主要內容進位及其轉換標識符、關鍵字常量變量八大基本數據類型final常量和Scanner輸入算術運算符賦值運算符關係運算符邏輯運算符位運算符條件運算符運算符的優先級別基本數據類型的類型轉換學習目標一、進位及其轉換1.1 進位類型十進位:人類使用二進位:計算機使用八進位和十六進位:為了更好的表示二進位
  • 跟我學java編程—不得不說的二進位和十六進位
    按同樣的方法,可以很容易地掌握十六進位數的表示方法。例如:在計算機程式語言中,通常用數字後面跟一個英文字母來表示該數的數制。十進位一般用D(Decimal)、二進位數用B(Binary)、十六進位用H(Hexadecimal)來表示。例如:23AH、570D、110101B、0075H,…。當然也可以用這些字母的小寫形式。
  • scratch3.0圖形化編程軟體解決「進位轉換(二進位)」問題
    想要回顧的請移步「百度百科」,嘻嘻首先 我們來看一下1~16 的一個二進位與十進位的對照表格:以上表格就是0-16的表達對照這種方法就是我之前文章的「思路1」,感興趣的網友們可以去看一下我之前的文章連結→scratch+程小奔機器人實現「進位轉換」(十進位轉二進位)這次我們主要說一下「短除法」思路解決十進位轉換為二進位
  • Day7 進位的表示與轉換
    要輸入一個二進位,你要先把它轉換成二進位。用短除法算一下:結果倒著寫,也就是說十進位數 666 的二進位數是 1010011010,把它輸入 py 中。這玩意兒是個,看起來很像二進位數的十進位數。這是因為在 python 中,默認情況下認為你輸入的數都是十進位的。
  • 10、進位轉換:二進位、八進位、十六進位、十進位之間的轉換
    上節我們對二進位、八進位和十六進位進行了說明,本節重點講解不同進位之間的轉換,這在編程中經常會用到,尤其是C語言。
  • scratch+程小奔機器人實現「進位轉換」(十進位轉二進位)
    進位轉換圖【原創】文章全部內容皆為作者原創,如有轉載請註明出處我們人類有十根手指,通常情況下我們在生活中的計數方式為「十進位」(即0-9),也就說滿十進一;而在計算機的世界裡,基礎電路只有「開27轉換二進位這是我們將最下面的1和右側的「餘數」自下向上的連接起來,27轉換為二進位寫成「11011」。
  • 二進位、八進位和十六進位之間轉換
    十進位是在人類社會發展過程中自然形成的,它符合人們的思維習慣,例如人類有十根手指,也有十根腳趾。進位也就是進位制。進行加法運算時逢X進一(滿X進一),進行減法運算時借一當X,這就是X進位,這種進位也就包含X個數字,基數為X。十進位有 0~9 共10個數字,基數為10,在加減法運算中,逢十進一,借一當十。
  • 計算機基礎進位轉換(二進位、八進位、十進位、十六進位)
    1.十進位轉R進位1.1 十進位轉二進位十進位整數轉二進位十進位整數轉換成二進位採用「除2倒取餘」,十進位小數轉換成二進位小數採用
  • 中國電子學會青少年軟體編程等級考試2級(C/C++)專題一:數制和進位轉換
    全國青少年軟體編程等級考試是由中國電子學會發起的面向青少年機器人軟體編程能力水平的社會化評價項目。
  • 二進位,八進位,十進位,十六進位之間的轉換
    >十進位到八進位:除8取餘數 最後把餘數倒過來同時我們也可以先將十進位轉換成二進位,然後將二進位又轉換成八進位比如:2456 轉化成八進位數字:46302456/8=307,餘0;307/8=38,餘3;38/8=4
  • 基礎知識 | 二進位、八進位和十六進位之間轉換詳解
    十進位是在人類社會發展過程中自然形成的,它符合人們的思維習慣,例如人類有十根手指,也有十根腳趾。進位也就是進位制。進行加法運算時逢X進一(滿X進一),進行減法運算時借一當X,這就是X進位,這種進位也就包含X個數字,基數為X。十進位有 0~9 共10個數字,基數為10,在加減法運算中,逢十進一,借一當十。
  • 進位轉換 二進位轉十進位
    上節課我們學習了十進位轉換成二進位的方法,那二進位轉換十進位是怎麼轉換的呢?
  • 二進位、八進位、十進位、十六進位之間的轉換
    反過來,當我們看到 FD時,如何迅速將它轉換為二進位數呢?先轉換F:        看到F,我們需知道它是15(可能你還不熟悉A~F這六個數),然後15如何用8421湊呢?應該是8 + 4 + 2 + 1,所以四位全為1 :1111。接著轉換 D:        看到D,知道它是13,13如何用8421湊呢?
  • 少兒編程中,你該如何給孩子講解進位問題
    看到這條評論,我覺得非常有必要回復一下,這也是很多人對於編程人員的一個誤會,總是認為編程人員那麼忙碌,性格可能會有點古怪,甚至來說,是一個宅男,是一個不會討女生歡迎的男生。好了,回復完這個問題,我們現在繼續來討論少兒編程,少兒編程,前期需要了解一定的計算機常識,而進位問題,是一個繞不過去的坎。尤其是二進位,我們不說什麼考試的重點這些,也不牽扯太多的教學問題,二進位,指定是計算機常識裡面最重要的基礎知識。今天,我們就來探討一些如何讓孩子理解進位問題。
  • 跟我學解Python題-二進位轉換
    這是我Python編程的第一篇,實際關於Python的培訓我已經做了兩年多了,一直想發自己的方法和題目分享給大家,最近終於空出一點時間,希望大家喜歡!題目:使用Python IDLE編輯器 編輯腳本。實現:輸入十進位正整數,輸出相應的二進位數字輸入樣例1:6輸出樣例1:110輸入樣例2:27輸出樣例2:11011解題過程:1、新建變量num,用於存儲輸入的十進位數字,num=int(input("請輸入想要轉換的十進位數字(十轉二
  • 二進位與八進位互相轉換
    上節課我們學習了二進位轉換十進位,那二進位與常用的八進位之間是如何互相轉換的呢?下面我們先看看二進位與八進位的轉換方法。
  • EV3關於10進位轉換2進位的詳解
    哈咯各位大家好之前突發奇想想做一個關於十進位轉化成二進位的想法,在這裡給大家講解一下。關於數字有多進位的,十進位、二進位、三進位、八進位、十六進位....等等。對我們最熟悉的莫過於十進位和二進位了,接下來給大家講解下如何實現將十進位轉化為二進位。
  • 二進位與十六進位之間互相轉換
    通過上節課的學習,我們掌握了二進位與八進位互相轉換的方法(我們介紹的是421法),我們進行知識遷移,二進位數轉換成十六進位數的方法我們用
  • 二進位轉換十進位,十進位轉換二進位
    如果把一個十進位的數轉換成二進位的數 , 直接把數除 以二 , 餘數為一就寫1 , 整除 , 就寫0 , 一直除完為止