嵌入式,單片機編程基礎-二進位

2020-12-16 單片機長

作為一名嵌入式底層驅動開發人員,或者是單片機的固件編程人員,掌握一些二進位的基本知識是很必要的。

首先,我們在看處理器的參考手冊時,看到最多的就是有關寄存器的介紹。我們開發驅動程序,本質上也是設置或讀取這些寄存器。參考手冊介紹寄存器時一般都是以比特位為單位介紹的。涉及到比特位當然以二進位表示最為自然。其次,我們在編寫或閱讀底層代碼時,如果涉及到寄存器的配置或是有關比特位的操作也是離不開二進位的影子。

那就來介紹下一些比較常用的的有關二進位的東西。

二進位的表示方法。比如我們要給一個char型變量a賦值一個二進位數100。如果我們寫成a=100,那麼a就是100。大俠別誤會我說的一百;沒錯就是十進位的100。如果要把二進位的100賦給a,需要這樣寫:a=0b100,。那麼如果我實在不知道這個二進位的賦值方法,也沒關係。我們可以寫成a=4。這就涉及到下個知識點二進位和十進位的轉換。

二進位轉十進位。比如我們有個二進位數0b10001001。我們先從右往左數(最右邊的位為第0位),發現共有3個1,分別是第0位、第3位、第7位。那麼計算方法就出來了:0b10001001 = 2^7+2^3+2^0 =128+8+1= 137。

十進位轉二進位時個人推薦靠近法。比如有個十進位數138,要轉成二進位數。第一步,要看2的幾次方能最靠近138又不大於138,經過大腦一陣折騰知道了2的7次方為128最靠近138,這樣我們就知道了這個二進位數的最左邊的1在第7位。第二步,138減去2的7次方(128)還剩下10,那我們看看2的幾次方最靠近這個10又不大於10,顯然2的3次方(8)滿足這個條件,這樣我們就知道了這個二進位數的第3位也是個1。第三步,10減去2的3次方(8)還剩下2,那就好辦了2的1次方就是2,所以這個二進位數的第1位也是個1。經過一陣折騰,我們知道了這個二進位數有3個1,分別在第7位,第三位和第1位。這樣我們就得到了這個二進位數0b10001010。

其實,最後我想說,我們可以用計算器進行二進位和十進位之間的轉換。但是如果我們對轉換比較熟悉的話,工作效率會更快一些。

相關焦點

  • 單片機C語言開發離不開它——秒懂二進位和十六進位
    單片機C語言開發離不開它--秒懂二進位和十六進位作為單片機愛好者,入門學習單片機編程一定要學會進位的基本概念,常見的有(二進位、八進位、十進位、十六進位),今天於曉超帶大家入門一下單片機C語言編程的二進位和十六進位(技術文章閱讀量慘澹,希望大家能夠點讚收藏加轉發
  • Cortex―M0單片機二-十進位整數轉換的快速算法
    摘要:為了提高Cortex—M0系列單片機應用系統的二進位到十進位BCD碼整數轉換代碼的執行效率,採用除十求餘數法來實現。關鍵詞:Cortex-M0;單片機;二-十進位轉換BCD碼;常數除法;快速算法引言 在單片機應用系統中,一般都需要高效快速地完成系統所需要的任務,並在任務完成後使系統進入睡眠或低功耗狀態,以便最大限度地節省系統功耗,增強系統的抗幹擾能力
  • 單片機進位轉換
    今天我就給大家講講與計算機有關的「進位轉換」問題。   我們以(25.625)(十)為例講解一下進位之間的轉化問題。 1. 十 -----> 二  給你一個十進位,比如:6,如果將它轉換成二進位數呢?
  • 單片機和嵌入式都是什麼?
    可以看出,嵌入式系統麻雀雖小,五臟俱全。什麼是單片機嵌入式系統的核心,就是嵌入式處理器。此外,還有嵌入式片上系統SoC(System on Chip)和可編程片上系統SoPC(System on a Programmable Chip)。我們的單片機,就屬於上述的第一種——MCU(嵌入式微控制器)。
  • 關於單片機和嵌入式,它們的區別是什麼
    單片機又是什麼?兩者有什麼區別和聯繫呢?針對兩者之間的問題小編整理了一篇文章,希望對大家理解兩者的基本概念,以及區別有所幫助。 1、從系統組成上區別,單片機由控制器、運算器、存儲器、輸入輸出設備構成,而嵌入式第一步需要結合具體的應用,考慮成本,性能,可擴展性,開發周期等各方面的要求,確定系統的主控器件後,加入微處理器,外圍硬體設備,嵌入式作業系統,應用程式組成。
  • 嵌入式系統概述及與單片機區別說明
    我們經常將晶片中沒有MMU(內存管理單元)因而不支持虛擬地址的系統(如STM32、NXP LPC系列、新NXP imxrt1052系列等)稱為單片機(如STM32、NXP LPC系列等),新的NXP-imxrt1052系列等),而帶有MMU的晶片可以支持虛擬地址,可以運行Linux、VxWorks、wince、an等作業系統,droid等作業系統稱為嵌入式系統
  • 單片機c語言編程實例
    1 51單片機C語言編程實例基礎知識:51單片機編程基礎單片機程序配置EA(PIN31)接高電平VCC;(運行單片機內部ROM中的程序)7. P3支持第二功能:RXD、TXD、INT0、INT1、T0、T1單片機內部I/O部件:(所為學習單片機,實際上就是編程控制以下I/O部件,完成指定任務)1. 四個8位通用I/O埠,對應引腳P0、P1、P2和P3;2.
  • 該不該放棄單片機、嵌入式這條路?
    所以現在回看那時的自己,就是一個嵌入式渣渣。 考研也沒有考上第一志願的理想學校,調劑到了北京一所高校,導師的研究方向是模式識別方向,那時圖像處理還沒有現在這麼火,研一的時候導師給我安排了一個VC++的上位機編程項目,結果我實在是搞不定,後面被迫放棄。
  • Cortex―M0單片機二-十進位整數轉換的快速算法
    摘要:為了提高Cortex—M0系列單片機應用系統的二進位到十進位BCD碼整數轉換代碼的執行效率,採用除十求餘數法來實現。關鍵詞:Cortex-M0;單片機;二-十進位轉換BCD碼;常數除法;快速算法引言 在單片機應用系統中,一般都需要高效快速地完成系統所需要的任務,並在任務完成後使系統進入睡眠或低功耗狀態,以便最大限度地節省系統功耗,增強系統的抗幹擾能力
  • 單片機進位轉換
    今天我就給大家講講與計算機有關的「進位轉換」問題。   我們以(25.625)(十)為例講解一下進位之間的轉化問題。 1. 十 -----> 二  給你一個十進位,比如:6,如果將它轉換成二進位數呢?
  • C/C+編程筆記:C語言進位詳解,二進位、八進位和十六進位!
    二進位 我們不妨將思維拓展一下,既然可以用 0~9 共十個數字來表示數值,那麼也可以用0、1兩個數字來表示數值,這就是二進位(Binary)。例如,數字 0、1、10、111、100、1000001 都是有效的二進位。
  • 跟我學java編程—不得不說的二進位和十六進位
    計算機能夠識別的數制是二進位數,二進位數是用0和1兩個數字來表示的數,計算機的指令集也是採用二進位表示,機器語言就是用二進位數編寫程序。可以藉助十進位數來理解二進位數。在十進位中,每一位有0、1、2、3、4、5、6、7、8、9十個數碼,因此基數為10,超過9就必須用多位數來表示,並遵循逢十進一的原則。
  • 【愛找茬】都是C語言,單片機C語言和普通的C語言究竟有什麼差異呢?
    C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、產生少量的機器碼以及不需要任何運行環境支持便能運行的程式語言。 儘管C語言提供了許多低級處理的功能,但仍然保持著良好跨平臺的特性,以一個標準規格寫出的C語言程序可在許多電腦平臺上進行編譯,甚至包含一些嵌入式處理器(單片機或稱MCU)以及超級電腦等作業平臺。
  • 《單片機原理與應用》習題集(上)
    第一章 計算機基礎1-1 什麼是二進位?為什麼在數字系統、計算機系統中採用二進位?1-2 將下列各數按權展開為多項式:(1) 110110B(2) 5678.32D(3) 1FB7H1-3 把下列十進位數轉化為二進位
  • 基於單片機的四位二進位轉十進位計算顯示程序
    此程序是根據自己的單片機板子寫的,四位共陽數碼管。本文引用地址:http://www.eepw.com.cn/article/170906.htmk1-k4是板子上的4個鍵 用來進行二進位輸入,因為按鍵只有按下和沒有按下兩種狀態,十進位的數值就顯示在數碼管上.
  • 零基礎學編程之進位轉換基礎
    十進位和二進位可以相互轉換,如下所示:計算機使用二進位,是因為計算機設計者發現在複雜電路中,將低電平表示0,高電平表示1,只有兩種電位在通過門電路之後更容易計算。其實用其它進位也可以表示,但是比較麻煩。二進位的基數為2,權為2^n(2的n次方),……、128、64、32、16、8、4、2 1。
  • 51單片機教程
    導讀:51單片機是最早應用的單片機,到現在為止也有很多都在用,優點,性價比非常高,簡單易學,在中國的市場佔有率還是蠻高的。目前單片機滲透到我們生活的各個領域,幾乎很難找到哪個領域沒有單片機的蹤跡。該系列單片機的始祖是Intel的8031單片機,後來隨著Flash rom技術的發展,8031單片機取得了長足的進展,成為應用最廣泛的8位單片機之一,其代表型號是ATMEL公司的AT89系列,它廣泛應用於工業測控系統之中。很多公司都有51系列的兼容機型推出,今後很長的一段時間內將佔有大量市場。
  • 【愛找茬】都是C語言,單片機C語言和普通的C語言究竟有什麼差異呢?
    C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、產生少量的機器碼以及不需要任何運行環境支持便能運行的程式語言。 儘管C語言提供了許多低級處理的功能,但仍然保持著良好跨平臺的特性,以一個標準規格寫出的C語言程序可在許多電腦平臺上進行編譯,甚至包含一些嵌入式處理器(單片機或稱MCU)以及超級電腦等作業平臺。
  • 淺談嵌入式……
    國內普遍認同的嵌入式系統定義為:以應用為中心,以計算機技術為基礎,軟硬體可裁剪,適應應用系統對功能、可靠性、成本、體積、功耗等嚴格要求的專用計算機系統。其實說白了,嵌入式屬於硬體開發層面。就是在已有的硬體上移植作業系統。以單片機作比較,單片機的工作模式是利用軟體編程控制硬體,實現一些功能。嵌入式是在軟體與硬體之間加入一個作業系統。
  • 嵌入式學習的正確步驟
    3、《實用C++程序設計》第二板 中國電力出版社 Steve_Oualline著  此階段主要是學習其面向對象的編程思想,加深對C語言和數據結構的理解。  4、學習單片機,最好能找個前輩帶一帶。  你能用51單片機做出一樣實際的東西嗎?即使它再簡單!  要注意加深對中斷的理解。