?
0???題記 在學習計算機基礎或者是數字電子技術、微機原理、單片機、C 語言等課程的時候,都會講到一個概 念:二進制數。就是這個二進制數難倒了很多的英雄漢,上面羅列的這些課程我都教過,這些課程有一個共 同的知識點就是二進制數,十進制數,十六進制數,還有八進制數以及他們的相互轉換,而對于電子類專業 的一門比較重要的課程--單片機,更是要用到二進制數和十六進制數。故而每次我講課時都會盡量詳細的 給學生講解這些內容。今天上午剛剛結束了兩個班的第一堂課,又勾起了我的回憶,讓我有一種把這部分知 識點寫下來的沖動,給那些剛剛開始學習數字電子技術、單片機、C 語言的學生們。以上是為這篇文章的來歷。 1???引子 ? 隨著電的使用,電器應用越來越廣泛,人們對于電器的要求也越來越高,要求功能強大,還要智能 化,使用簡單化,這些要求讓數字電子技術應用范圍越來越廣泛,原先很多采用模擬電路的地方都被數字電 路取代了,特別是對于信號處理方面,隨著計算機科學與技術突飛猛進地發展,用數字電路進行信號處理的 優勢也更加突出。信號處理的一般方法都是先將模擬信號按比例轉換成數字信號,然后送到數字電路進行處 理,最后再將處理結果根據需要轉換為相應的模擬信號輸出。從一般的模擬信號到數字信號,要經過采樣、 量化、編碼,最終一個連續的模擬信號波形就變成了一串離散的、只有高低電平之分“0 1 0 1...”變化的數 字信號。自然界來的,或者通過傳感器轉化的主要是模擬信號,那么為什么要多此一舉把它們變為數字信號 呢?原因有以下幾點: 一、模擬信號有無窮多種可能的波形,同一個波形稍微變化就成了另一種波形,而數字信號只有兩種波 形(高電平和低電平),這就為信號的接收與處理提供了方便。即,數字信號易于傳輸,抗干擾能力強。 二、模擬信號由于它的多變性極容易受到干擾,其中包括來自信道的和電子器件的干擾,模擬器件難以 保證高的精度(如放大器有飽和失真、截止失真、交越失真,集成電路難免有零點漂移)。而數字電路中有 限的波形種類保證了它具有極強的抗干擾性,受擾動的波形只要不超過一定門限總能夠通過一些整形電路 (如斯密特門)恢復出來,從而保證了極高的準確性和可信性,而且基于門電路、集成芯片所組成的數字電 路也簡單可*、維護調度方便,很適合于信息的處理。特別是計算機科學技術發展后,很多模擬電路無法實 現的功能都可以在采用數字電路來實現。 而電子計算機的出現,讓數字電子技術有了更廣闊的發展空間,也讓我們的生活更加的豐富。手機帶 給我們聯絡的方便,電腦帶給我們工作和娛樂以及學習的便利,天上的飛機,路上的汽車,讓我們出行更加 方便,家中的空調冰箱洗衣機微波爐等讓我們生活更加舒適。在手機、電腦、飛機、汽車以及家電中都有一 塊或者多塊的微處理器在工作,而這些微處理器就是由數字電路構成的。 2???? 0 和 1 的舞蹈 2.1????? 二進制數的來歷 電,發明出來是為人類服務的,那么電路同樣的是為人們服務的,也就是說我們需要在電路中能夠幫 助我們做平時生活中的事情,這些事情應該是我們不用電也可以來做的。舉個例子,譬如我們生活中的數, 我們采用的是十進制數,今年是 2010 年,就是指從耶穌誕生之年到現在有 2010 年了,班上有 45 個人, 買了一條褲子花費 368 元等等,那么在這些數字的背后隱藏著什么呢?我們都知道 1+1=2,但是陳景潤花 費了很大的功夫才證明,這說明即使我們看起來很平常的的事情也隱藏著一些我們不知道的因素,在這里我 們不是來討論 1+1=2 的,因為我們不是頂極的數學家,但關于十進制數,我們可以討論一下一些普通人都 有能力理解的東西。2010,45,368 這些數字給我們提供了 2 個信息,數碼和數位,2010 由三個數碼 0,1,2 構成,45 由兩個數碼 4,5 構成,368 由三個數碼 3,6,8 構成,而且這些數碼的位置不一 樣,那么他們所代表的大小不一樣的,如圖 1:
圖中 10 就是基數,而 ?103 、 102 、 101 、 100??? ?也就是 1000,100,10,1 就是權。所謂的權,就是在 這個數中占的數值大小。也就是說 2010 中的“2"代表了 2 個“千”,45 中的”4"代表了 4 個“十”,而 368 中 的”8“代表了 8 個“一”,而且同一個數碼放在不同的位置上就代表了不同數值,如 555 中,三個 5 的權分別 100,10,1,那么第一個 5 代表的數值就是 5X100,第二個 5 代表的數值是 5X10,的三個 5 代表的數 值是 5X 1。采用這種方法,我們就可以用有限的數碼來表示無限的數據了。 總結一下,十進制采用了 0,1,2,3,4,5,6,7,8,9 共 10 個數碼,基數是 10,進行運算 的時候,我們采用逢十進一。 這是我們現實生活中需要用到的十進制的一些情況,那么我們在數字電路中必然也要采用這種計數方 法,電路中傳輸的就是電壓和電流,我們要用 10 種不同的狀態來表示這 10 個數碼有點困難。我們舉例來 說吧,譬如有一個電壓,0~5V ,那么我們就可以這樣來表示 0~9 這 10 個數碼,如表 1。 表 1 電壓和數碼之間的對應關系
接下來就是要制造一個能夠精確的實現 0V,0.5V,1V,1.5V……4.5V 等各種電平的基本電路,但這一 件是非常困難的事情。兩個相鄰的電平只有 0.5V,電路受到干擾,電平偏移 0.5V,那么就變成另外一個數 據了,而要保證電平完全沒有漂移是不可能的,所以,十進制數在電路中很難直接實現了。即使勉強實現 了,數據傳輸的時候又遇到了更大的數據準確性的問題,因為電平經過導線傳輸的時候會變化,相鄰的兩個 電平很容易混淆。這種十進制數在數字電路中是沒法直接實現,更別說是在微處理器這種高頻電路中實現 了。這樣必然要另外想辦法了。而戈特弗里德·威廉·凡·萊布尼茨(Gottfried Wilhelm von Leibniz,1646 年 7 月 1 日~1716 年 11 月 14 日)在 18 世紀初提出的二進制幫助人們解決了問題,雖然萊布尼茨受中 國的易經八卦啟發而發明的二進制數最初不是用來設計電路的,因為那個時候人們才開始研究電的現象,電 燈,電池等都還沒有出現。但 20 世紀初人們制造出二極管、三極管、集成電路等的時候,卻把二進制拿來 用于電路的設計。二進制數因為只有兩個數 0 和 1,狀態也只有兩種,在電路中實現起來就方便的多了,只 要一個高電平和低電平就可以,甚至說有電流和無電流、有電荷和無電荷都可以表示,這樣的話電路的實現 非常簡單,而且這種電路也不容易受到干擾,抗干擾性好的多。還是以上面 0~5V 的一個電平來說明,看圖2。
從圖 2 中可以看到,我們可以認為 0~1V 都是低電平,2.4V~5V 都是高電平,若假設低電平代表 0,高電 平代表 1,那么我們就實現了二進制數了,這個電路簡單,而且易與實現,電平允許有一定的漂移,提高了 抗干擾能力,數據傳輸可*性高的多。所以數字電路中采用了二進制數。 假若以高電平代表 1,低電平代表 0,則稱為正邏輯系統,反之,以高電平代表 0,低電平代表 1, 則稱為負邏輯系統,一般來說,我們采用正邏輯系統。 2.2 二進制數與十進制數 接下來我們就研究一下二進制數,注意了,下面我們純粹的研究二進制數,跟二進制的數字電路實現 沒有任何的關系了。 借助于十進制數的思路,我們的二進制數有兩個數碼:0 和 1,基數是 2,進行運算的時候是逢二進 一。舉例來說明,比如二進制數 10110(注意,讀這個數據的時候只需要把每一位數據讀出來就可以了, 千萬不要采用十進制數的讀法。即這個數讀作:一 零 一 一 零,而不是一萬零一百一 十,若按照十進制數 的讀法,會讓別人笑話的。切記切記)。對于這個數,我們知道它的每一位都有權,而且權是 2 的冪,即 10110 = 1X24???? ?0X23???? ?1X22???? ?1X21???? ?0X20??? ?若我們把這些數字相加計算出數值來,就會發現它是一個 十進制數 22,這樣我們就把一個二進制數轉換為十進制數了。我們接下來就講二進制數和十進制數的相互 轉換問題。 隨便拿出一本教材來,關于二進制數和十進制數的相互轉換,都講了一個方法:二進制數轉換為十進 制數采用加權法,就是上面說的例子。而十進制數轉換為二進制數則分為整數部分和小數部分分別轉換,整 數部分用除 2 取余法,小數部分采用乘 2 取整法,然后要列豎式來求解。一般來說,我們在進行應用的時 候,譬如數字電路,單片機中使用的數字都是整數,而且只需要我們快速的計算出這個數據即可,若按照除
相關推薦 二進制格雷碼與自然二進制碼的互換分析其中采用循環二進制編碼的絕對式編碼器,其輸出信號是一種數字排序,不是權重碼,每一位沒有確定的大小,不能直接進行比較大小和算術運算,也不能直接轉換成其他信號,要經過一次碼變換,變成自然二進制碼。 2020-09-23 16:23:046149 1.8位二進制所表示的無符號整數其相應的十進制數范圍是多少內。錯選、多選或未選均無分。1.8位二進制所表示的無符號整數,其相應的十進制數范圍是 ( )A.0~255B.1~256C.1~255D.0—2562. 81H是用8位二進制原碼所表示的十六進制數,其相... 2021-09-10 07:26:15 二進制數的運算及加法電路前言上篇 計算機組成原理第1章 計算機基礎知識1.1 數制1.2 邏輯代數(布爾代數)1.3 邏輯電路1.4 二進制數的運算及加法電路第2章 微型計算機的基本組成電路2.1 算術邏輯單元(ALU 2021-09-10 07:34:55 二進制數邏輯運算是怎么運算的“與” , 其結果必為 0; 凡同 1 相“與” , 其結果不變(0 同 1 相“與”仍為 0, 1 同 1 相“與”仍為 1) 。因此, 如果一個 8 位二進制數, 想要保留其中的幾位而屏蔽(清除) 掉其余 2019-12-25 16:36:41 二進制與十進制數對照顯示實驗相關資料下載這是一個可以對照顯示0~9這10個數字的二進制和十進制的電路。二進制數字用4個發光二極管顯示;它們排成一行,亮表示1,滅表示0。十進制數字用一個數碼管表示。數字的變化采用CD4040組成加法計數器,手動加1計數。 2021-04-27 07:21:40 二進制大小是否限于IRAM大???在文檔中寫道,如果啟用閃存加密,加密后的二進制文件將存儲到 IRAM 中。如果存儲了整個二進制文件或以某種方式部分執行,我找不到更多詳細信息。因此,我會問是否啟用了加密,二進制大小是否限于 IRAM 大小? 2023-04-11 06:35:01 二進制顯示數組請教各位大神如何將一個十進制數組變成二進制顯示??我是初學者,在數組屬性里的顯示格式里,二進制不可選,是不是需要數據轉換???請各位大神不吝賜教,謝謝?。。。。。?! 2014-11-28 11:21:16 二進制格雷碼與自然二進制碼的互換位、13位、14位或更高位等多種。其中采用循環二進制編碼的絕對式編碼器,其輸出信號是一種數字排序,不是權重碼,每一位沒有確定的大小,不能直接進行比較大小和算術運算,也不能直接轉換成其他信號,要經過一次 2011-03-08 14:16:59 二進制碼詳解 Binary-Coded-Decimal,二進制編碼的十進制碼?! ∵@種編碼僅僅使用4位二進制數來表示十進制數中的0~9十個數碼。二進制數碼每位的值稱為權或位權?! ∑渲衎0位的權為20=1,b1位 2009-04-06 23:55:36 二進制運算問題在LabVIEW中,如何實現一個十六進制的數取反后加1,如FFFFFFCB表示為二進制是11111111111111111111111111001011,取反后 2014-03-15 00:32:43 AD轉換以后的二進制數怎么處理,和采集之前的模擬量對應?現在有個應變片,想測壓力??! AD用的是HX711 有個問題是,AD 采集以后是一個二進制數,現在要將測出的壓力顯示在1602上,怎樣將這個二進制數變成 壓力值?? 2015-10-25 12:57:03 Labview圖像二進制轉換問題`各位大神,我想把一張圖片通過變成二進制通過TCP傳輸,現在我把圖片轉換成二進制文件,但文件只有1KB大小。我想讀取但是不知道二進制的圖片數據類型。能否幫我畫一個簡易的讀取二進制圖片的程序,謝謝` 2017-12-29 09:26:42 Labview種如何將一個數字轉換為5位二進制,8位二進制以及任意位的二進制表示呢Labview種如何將一個數字轉換為5位二進制,8位二進制以及任意位的二進制表示呢 2018-01-22 17:22:31 M451如何丟棄函數的二進制代碼填入SRAM的二進制代碼
應用程序 : 示例代碼演示了如何丟棄函數的二進制代碼, 然后填入 SRAM 的二進制代碼, 然后調用它 。
BSP版本:M451系列BSP V3.01.001
硬件: 任何 M451 系列板塊 2023-08-30 07:35:31 labview中的二進制存儲我想把一個15000個點的一位數組存儲為二進制文件,但是不知道是存儲的速率不夠還是其他什么原因,存儲后我再讀取只有5000個點。程序如圖所示。請高人指點啊,我不知道二進制存儲的速率到底是多大,是不是存儲速率不夠還是怎么的 2014-03-03 09:31:32 labview串口如何接收16位二進制數無論下位機發送的是何種數據,labview從串口接收的時候,總是將每8位二進制數進行接收。比如我現在下位機不停地給串口發送十六進制數:1A2B3C4D5E6F.......,labview從串口接收 2016-12-14 20:19:04 labview存儲二進制文件問題`我現在將一個動態二維數組存到二進制文件中,這個二維數組的數值一秒變一次,每變一次就保存到二進制文件中,但是最后我發現保存下來的數只是最后一秒的,就好像每次保存都是替換文件所有內容,如何修改成不替換呢?` 2020-08-07 09:53:53 labview編程模擬十進制數到二進制數的轉換過程模擬十進制數到二進制數的轉換過程,以LED來模擬各個二進制位,并能以動畫方式模擬計數的過程。 選擇手動方式時,將8個LED變成滑動條中數字的二進制(基數2)表示。例如,如果滑動條設置為數字10(在 2018-12-07 22:20:10 xilinx網絡服務器怎么將十六進制數轉換為二進制數?嗨 在xilinx網絡服務器應用程序中,我使用ml402板與xilinx 10.1版本...我能ping,但網頁??沒有彈出將十六進制數轉換為二進制數...請幫我解決這個問題.... 。上次我也沒有得到任何回復我的問題....我正在等待一些有用的建議!!!! 2020-03-26 10:33:33 【小梅哥FPGA進階教程】第二章 二進制轉BCD情況下,我們需要將運算結果顯示到某種顯示設備上,如果直接以二進制的形式來顯示的話,會非常不便于我們查看。因此,我們需要首先將二進制數轉換為十進制數再進行顯示。二進制到十進制的轉換有很多種方法。這里,我們 2017-01-09 14:38:01 【夢翼師兄今日推薦】BCD轉二進制程序設計講解 本帖最后由 mengyi1989 于 2019-12-7 12:32 編輯
立即學習>>夢翼師兄的FPGA實戰課程眾籌寫在前面的話在前面小節的學習中,我們已經掌握了將二進制數轉換成 2019-12-03 21:48:59 關于Labview中二進制文件的讀寫在LABVIEW中使用二進制讀寫節點時,遇到一個奇怪的問題,當我通過新建文件創建二進制文件(見第一張圖),之后將數據寫入到二進制文件中(見第二張圖),最后讀取二進制文件(見第三張圖)。現在問題是當我 2017-09-30 15:03:01 關于兩位十進制數轉換成二進制數的仿真 求助啊求助,不怎么懂這題該怎么做。求教。用兩片四位全加器74283和必要的邏輯門設計一個數制轉換電路,實現將輸入的兩位十進制數轉換成二進制數,十進制數的輸入采用8421BCD碼來表示。用multisim仿真畫圖。 2016-07-01 20:13:27 十進制數65用8位二進制數表示時應為多少內。錯選、多選或未選均無分。1.十進制數65用8位二進制數表示時應為 ( )A. 11000001B B.OlOOOOOIBC. OlOOlOllBD.O0111011B2.十進制數-2用二進制補碼表示... 2021-09-10 06:18:39 十進制和二進制之間的轉換原理十進制和二進制之間的轉換 既然一個數可以用二進制和十進制兩種不同形式來表示,那么兩著之間就必然有一定的轉換關系?! ∮墒?b class="flag-6" style="color: red">進制數的一般表示式: 可以得到整數的一般表達式: 將等式兩邊分別除以2 2009-04-06 23:54:14 單片機開發為什么要用二進制?找出一種具有十個不同穩定狀態的電子元件則是相當困難的。在二進制中,只有二個數0和1,這正好和電子元件的兩個不同穩定狀態相對應。例如,以1代表高電平,則0代表低電平,這樣,采用二進制后,就可以利用二值 2019-12-10 10:55:42 在FPGA中實現一種二進制轉BCD碼的電路設計字邏輯設計課程中,我們已經學過了BCD碼的相關知識,它用4位二進制數來表示1位十進制數中的09,是二進制編碼的十進制代碼,常見的BCD碼有8421BCD碼,2421BCD碼,5421BCD碼,余3碼以及格雷 2022-07-12 16:41:42 在labview2010中,怎么把十進制轉二進制,求大神!?。?!創建前面板,該前面板有8個led指示器和一個8位無符號十進制整數的垂直滑動條控件。顯示滑動條帶有數字指示器,確保led均勻分布并且排列在底部。要求實現8個led的亮滅狀態與滑動條中的十進數的數字的二進制相對應。(即十進制向二進制轉換) 2015-09-19 10:06:39 如何丟棄函數的二進制代碼填入SRAM的二進制代碼?
應用程序 : 示例代碼演示了如何丟棄函數的二進制代碼, 然后填入 SRAM 的二進制代碼, 然后調用它 。
BSP版本:M451系列BSP V3.01.001
硬件: 任何 M451 系列板塊 2023-08-23 06:34:10 如何使用USART接收二進制數我想制作一個以8個LED的形式實現二進制計數器。該計數器通過USART發送一個8位二進制數,并讓8個LED顯示數字(如果位為0,則指示燈熄滅,當位為1時指示燈亮)。這樣做的最佳方法是什么? 2018-10-08 14:07:42 如何理解二進制運算規則 二進制是如何運算的:將二進制數(10011111011.11101100)2轉換成十六進制數。(10011111011.11101100)2=(4FB.EC)16其他進制轉換為二進制:(1)十進制轉換為二進制整數轉換 2019-12-11 17:49:02 如何用VHDL實現16位二進制數轉化為相應的BCD碼 downto 0));End;Architecture one of B_BCD isBeginProcess(B)begin(16位的二進制碼)轉化為(相應的BCD碼);比如說1234這個十進制數,它 2014-04-10 09:46:42 怎么將16位二進制數轉換成十進制數的函數?有沒有人建立一個將16位二進制數轉換成十進制數的函數?謝謝,JB 以上來自于谷歌翻譯 以下為原文Has anyone built a function(s) that converts a 16-bit binary number into decimal?Thanks,JB 2019-03-26 11:21:54 怎么用單片機通過串口發送一串二進制數?我想用單片機通過串口發送一串二進制數(例如:0100101,不是8位也不是16位的數),我只會C語言,但是c語言好像不能發二進制的,求高手指點。類似這種:#include#define uchar 2019-10-11 06:00:49 把數組中的十進制數按字符串合并,怎么再表示成二進制.....`把數組中的十進制數按字符串合并,怎么再表示成二進制?最終把二進制數再轉成十進制輸出?看下圖:上圖十進制的數組如第一列0 1 0怎樣把它看成二進制010,然后轉化為2?其他列也這們處理 ,怎么實現?` 2013-04-05 18:50:14 提取一個8位二進制數的低3位和另一個8位二進制數的高5位組合成一個新的8位二進制數,用C語言怎么實現?提取一個8位二進制數的低3位和另一個8位二進制數的高5位,然后組合成一個新的8位二進制數,用C語言怎么實現? 2019-01-17 06:35:14 格雷碼簡介及格雷碼與二進制的轉換程序科學的發展。/*格雷碼與二進制的轉換程序 * 本程序采用遞推的方法進行推導,可以轉換0~2147483647之間的數(1~31位) * 推導方式如下(以三位格雷碼為例): * 序號 格雷碼 格雷碼實值 2011-04-22 09:00:58 請問bcd碼和二進制有什么關系?這個bcd碼和二進制有什么關系?
bcd 表示0011001是19(十進制)
二進制表示0011001是25(十進制)
這個怎么確定是哪個??? 2023-10-07 06:02:17 二進制數的運算規則二進制數的運算規則 二進制數之間可以執行算術運算和邏輯運算,其規則簡單,容易實現?! 。?) 加法運算規則 0 + 0 = 0 例如: 2009-10-13 16:24:1522294 什么是二進制計數器,二進制計數器原理是什么?什么是二進制計數器,二進制計數器原理是什么?
計數器是數字系統中用得較多的基本邏輯器件。它不僅能記錄輸入時鐘脈沖的個數,還可以實現 2010-03-08 13:16:3430352 二進制電平,什么是二進制電平二進制電平,什么是二進制電平
在二進制數字通信系統中,每個碼元或每個符號只能是“1”和“0”兩個狀態之一。若將每個碼元可能取的狀態增 2010-03-17 16:51:582255 本的二進制加法/減法器,本的二進制加法/減法器原理本的二進制加法/減法器,本的二進制加法/減法器原理
兩個二進制數字Ai,Bi和一個進位輸入Ci相加,產生一個和輸出Si,以及一個進位輸 2010-04-13 11:11:555132 格雷碼與二進制的轉換格雷碼,又叫循環二進制碼或反射二進制碼,格雷碼是我們在工程中常會遇到的一種編碼方式,它的基本的特點就是任意兩個相鄰的代碼只有一位二進制數不同,這點在下面會詳細講解到。格雷碼的基本特點就是任意兩個相鄰的代碼只有一位二進制數不同。 2018-03-02 15:48:5316613 |
評論
查看更多