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

2020-12-04 單片機長

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

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

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

二進位的表示方法。比如我們要給一個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。

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

相關焦點

  • 單片機進位轉換
    今天我就給大家講講與計算機有關的「進位轉換」問題。   我們以(25.625)(十)為例講解一下進位之間的轉化問題。 1. 十 -----> 二  給你一個十進位,比如:6,如果將它轉換成二進位數呢?
  • C/C+編程筆記:C語言進位詳解,二進位、八進位和十六進位!
    二進位 我們不妨將思維拓展一下,既然可以用 0~9 共十個數字來表示數值,那麼也可以用0、1兩個數字來表示數值,這就是二進位(Binary)。例如,數字 0、1、10、111、100、1000001 都是有效的二進位。
  • 基於單片機的四位二進位轉十進位計算顯示程序
    此程序是根據自己的單片機板子寫的,四位共陽數碼管。本文引用地址:http://www.eepw.com.cn/article/170906.htmk1-k4是板子上的4個鍵 用來進行二進位輸入,因為按鍵只有按下和沒有按下兩種狀態,十進位的數值就顯示在數碼管上.
  • scratch+程小奔機器人實現「進位轉換」(十進位轉二進位)
    >【原創】文章全部內容皆為作者原創,如有轉載請註明出處我們人類有十根手指,通常情況下我們在生活中的計數方式為「十進位」(即0-9),也就說滿十進一;而在計算機的世界裡,基礎電路只有「開/關(通/斷)」(即0/1)兩種情況,這與誕生幾千年的二進位不謀而合;例如:二進位數字
  • 雲錦織造最高機密首度示眾 類似計算機二進位編程
    雲錦織造最高機密首度示眾 類似計算機二進位編程 2015-01-26 10:36:08在採訪中記者了解到,原來雲錦織造就像是最古老的計算機,織造過程就像是計算機二進位編程、輸入電腦再顯示出來。原來最古老的電腦編程,就在南京。
  • 編程嵌入式信號處理背板的開發設計
    在對Virtex系列FPGA進行充分理解和研究的基礎上,結合對XC4000系列FPGA和DSP背板開發設計經驗,研製出了基於XCV200/300PQFP240和TMS320C40的可編程嵌入式高速信號處理背板。
  • 數論之十進位轉二進位
    一、實驗目標輸入一個正整數,轉換為二進位輸出。輸入樣例1:14輸出樣例1:1110數據範圍:* n <= 2^31二、分析2、方案和步驟用一個數組a[100]來保存二進位,用last表示當前存儲的位,last=1表示二進位的個位數。
  • 跟我學解Python題-二進位轉換
    這是我Python編程的第一篇,實際關於Python的培訓我已經做了兩年多了,一直想發自己的方法和題目分享給大家,最近終於空出一點時間,希望大家喜歡!實現:輸入十進位正整數,輸出相應的二進位數字輸入樣例1:6輸出樣例1:110輸入樣例2:
  • 16進位數轉換成10進位整數的VC++程序
    二進位數據很少直接用在Visual C++++程序中,因為C++通常被視作高級語言。然而,對於要在兩類不同設備間傳輸信息的通信網絡而言,二進位數或十六進位數的傳輸過程比十進位數更為簡單。
  • 8051單片機的指令系統有什麼特點?
    發表於 2020-04-05 8051單片機(STC89C52)之改變蜂鳴器發聲頻率 由於定時器0的中斷處理程序為50ms觸發一次, 故改變tcount歸零時的臨界值即可改變蜂鳴器發聲的頻率
  • 四位二進位轉十進位計算顯示程序
    此程序是根據自己的單片機板子寫的,四位共陽數碼管。k1-k4是板子上的4個鍵 用來進行二進位輸入,因為按鍵只有按下和沒有按下兩種狀態,十進位的數值就顯示在數碼管上.
  • 清晰說明十進位如何快速轉二進位,助力考生
    關於二進位、十進位、八進位、十六進位數據轉換計算方法詳細總結>今天之所以又寫這篇文章,一是補充上文中的缺憾,沒有分享十進位到二進位最快的方法;再就是響應平臺號召,助力高考。我想這可能會是一個趨勢,現在的編程教育不斷向前提,所以不好說,而且小編在某處看到這樣一句話:【高考】考綱二 數值的概念、二進位整數、十進位整數和十六進位整數的相互轉算也算是一個偏門的預測了吧,何況,進位的轉換在我們日常的編程中也經常會用到,對於十進位到二進位的轉換更多的是在初級的考試中。掌握了今天的方法,可謂兩個字吧,快!準!
  • 關於二進位、十進位、八進位、十六進位數據轉換計算方法詳細總結
    下面在安靜的音樂中,讓我們開始學習吧在我們接觸編程知識時,總會接觸有關進位轉換的知識,最常見的就是10進位與二進位或十六進位之間的轉換,很多時候我們總會遺忘,雖然現在也出現了很多可以直接使用的網絡在線的進位轉換工具,但考試中,我們就要靠自己通過公式進行運算了。
  • 單片機C語言程序設計:T0控制LED實現二進位計數
    /* 名稱:T0 控制 LED 實現二進位計數說明:本例對按鍵的計數沒有使用查詢法,沒有使用外部中斷函數,沒有使用定時或計數中斷函數
  • 二進位是源於《易經》嗎?
    二進位是計算技術中廣泛採用的一種數制,20世紀被稱作第三次科技革命的重要標誌之一的計算機的發明與應用。二進位數據是用0和1兩個數碼來表示的數。它的基數為2,進位規則是「逢二進一」,借位規則是「借一當二」,由18世紀德國數理哲學大師萊布尼茲發現。
  • 十年資深嵌入式大神:教你真正好學的嵌入式開發學習路線
    圖形界面開發 1、常用控制項——button、label、text edit等 2、常用布局方式——水平布局、垂直布局、固定布局、網格布局、相對布局等 3、常用事件及信號處理技術——信息回調、滑鼠、鍵盤事件等 4、時間編程、數據存儲、繪圖機制、定時器處理、多任務處理等 3、嵌入式Linux高級程序設計 嵌入式Linux
  • FLASH K9F1G08U0M在MSP430F149嵌入式系統中的應用
    本文引用地址:http://www.eepw.com.cn/article/152167.htm1 元件介紹1.1 MSP430晶片 MSP430系列單片機是TI公司推出的16位RISC系列單片機,該系列是一組超低功耗微控制器,供電電壓範圍為1.8V―3.6V。
  • 二進位數折半查找算法在DSP上的實現
    文章給出了將折半算法應用於數位訊號處理器上以實現二進位數的查找算法的一種具體方法。並給出了採用這種方法的軟體程序。有一種看法認為:單片機是事物處理型的處理器,如開關的通斷或邏輯操作等;數位訊號處理器是數據處理型的處理器,如進行大量的包括FFT在內的數據運行等。這種看法在某種程序上是有一定道理的。一般地說,DSP應用系統要處理的數據多、運算量大而且實時性要求較高,研究DSP本身(包括硬體方面和軟體方面)的優勢對快速有效地執行某種算法有著重要的實用價值。
  • 二進位轉換為十進位和十進位轉換為二進位的方法
    各位小夥伴們大家好,在之前的文章中小編也介紹了關於二進位轉十進位的方法,這次小編知道了一個更簡單的方法,具體如下:比如我們要把28轉為二進位:,從左往右把二進位數字湊在一起,11100就是28的二進位了。
  • 二進位、十進位、八進位、十六進位間的相互轉換函數
    二進位、十進位、八進位、十六進位間的相互轉換函數1、輸入任意一個十進位的整數,將其分別轉換為二進位、八進位、十六進位。{int num;char a[39];//定義一個字符數組,用於存儲字符串cout<<"Entre num:"<<endl;cin>>num;cout<<"二進位