<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                【14.1 為什么要二進制?】 為什么要二進制?我們日常生活明明是十進制的,為何數字電子領域偏要選擇二進制?這是由數字硬件電路決定的。人有十個手指頭,人可以直接發出十種不同聲音來命名0,1,2,3...9這些數字,人可以直接用眼睛識別出十種不同狀態的信息,但是數字底層基礎硬件電路要直接處理和識別十種狀態卻很難,相對來說,處理和識別兩種狀態就輕松多了,所以選擇二進制。比如,一顆LED燈的亮或滅,一個IO口的輸出高電平或低電平,識別某一個點的電壓是高電平或低電平,只需要三極管等基礎元器件就可把硬件處理電路搭建起來,二進制廣泛應用在數字電路的存儲,通訊和運算等領域,想學好單片機就必須掌握它。 【14.2 二進制如何表示成千上萬的大數值?】 二進制如何表示成千上萬的數值?現在用LED燈的亮和滅來跟大家講解。 (1)1個LED燈: 滅 第0種狀態 亮 第1種狀態 合計:共2種狀態。 (2)2個LED燈挨著: 滅滅 第0種狀態 滅亮 第1種狀態 亮滅 第2種狀態 亮亮 第3種狀態 合計:共4種狀態。 (3)3個LED燈挨著: 滅滅滅 第0種狀態 滅滅亮 第1種狀態 滅亮滅 第2種狀態 滅亮亮 第3種狀態 亮滅滅 第4種狀態 亮滅亮 第5種狀態 亮亮滅 第6種狀態 亮亮亮 第7種狀態 合計:共8種狀態。 (4)8個LED燈挨著: 滅滅滅滅滅滅滅滅 第0種狀態 滅滅滅滅滅滅滅亮 第1種狀態 ...... 第N種狀態 亮亮亮亮亮亮亮滅 第254種狀態 亮亮亮亮亮亮亮亮 第255種狀態 合計:共256種狀態。 (5)16個LED燈挨著: 滅滅滅滅滅滅滅滅滅滅滅滅滅滅滅滅 第0種狀態 滅滅滅滅滅滅滅滅滅滅滅滅滅滅滅亮 第1種狀態 ...... 第N種狀態 亮亮亮亮亮亮亮亮亮亮亮亮亮亮亮滅 第65534種狀態 亮亮亮亮亮亮亮亮亮亮亮亮亮亮亮亮 第65535種狀態 合計:共65536種狀態。 (6)32個LED燈挨著: 滅滅滅滅滅滅滅滅滅滅滅滅滅滅滅滅滅滅滅滅滅滅滅滅滅滅滅滅滅滅滅滅 第0種狀態 滅滅滅滅滅滅滅滅滅滅滅滅滅滅滅滅滅滅滅滅滅滅滅滅滅滅滅滅滅滅滅亮 第1種狀態 ...... 第N種狀態 亮亮亮亮亮亮亮亮亮亮亮亮亮亮亮亮亮亮亮亮亮亮亮亮亮亮亮亮亮亮亮滅 第4294967294種狀態 亮亮亮亮亮亮亮亮亮亮亮亮亮亮亮亮亮亮亮亮亮亮亮亮亮亮亮亮亮亮亮亮 第4294967295種狀態 合計:共4294967296種狀態。 結論: 連續挨著的LED燈越多,能表達的數值范圍就越大。 【14.3 什么是位?】 什么是位?以上一個LED燈就代表1位,8個LED燈就代表8位。位的英文名是用bit來表示。一個變量的位數越大就意味著這個變量的取值范圍越大。一個單片機的位數越大,就說明這個單片機一次處理的數據范圍就越大,意味著運算和處理速度就越快。我們日常所說的8位單片機,32位單片機,就是這個位的概念。為什么32位的單片機比8位單片機的處理和運算能力強,就是這個原因。 【14.4 什么是字節?】 什么是字節?字節是計算機很重要的一個基本單位,一個字節有8位。8個LED燈挨著能代表多少種狀態,就意味著一個字節的數據范圍有多大。從上面舉的例子中,我們知道8個LED燈挨著,能表示從0到255種狀態,所以一個字節的取值范圍就是從0到255。 【14.5 三種常用變量的取值范圍是什么?】 前面章節曾提到三種常用的變量:unsigned char,unsigned int ,unsigned long。現在有了二進制和字節的基礎知識,就可以跟大家講講這三種變量的取值范圍,而且很重要,這是我們寫單片機程序必備的概念。 unsigned char的變量占用1個字節RAM,共8位,根據前面LED燈的例子,取值范圍是從0到255。 unsigned int的變量占用2個字節RAM,共16位,根據前面LED燈的例子,取值范圍是從0到65535。多說一句,對于51內核的單片機,unsigned int的變量是占用2個字節。如果是在32位的STM32單片機,unsigned int的變量是占用4個字節的,所以不同的單片機不同的編譯器是會有一些差異的。 unsigned long的變量占用4個字節RAM,共32位,根據前面LED燈的例子,取值范圍是從0到4294967295。 【14.6 例程練習和分析。】 現在我們編寫一個程序來驗證unsigned char,unsigned int,unsigned long的取值范圍。 定義兩個unsigned char變量a和b,a賦值255,b賦值256,255和256恰好處于unsigned char的取值邊界。 再定義兩個unsigned int變量c和d,c賦值65535,d賦值65536,65535和65536恰好處于unsigned int的取值邊界。 最后定義兩個unsigned long變量e和f,e賦值4294967295,f賦值4294967296,4294967295和4294967296恰好處于unsigned long的取值邊界。 程序代碼如下: /\*---C語言學習區域的開始。-----------------------------------------------\*/ void main() //主函數 { unsigned char a; //定義一個變量a,并且分配了1個字節的RAM空間。 unsigned char b; //定義一個變量b,并且分配了1個字節的RAM空間。 unsigned int c; //定義一個變量c,并且分配了2個字節的RAM空間。 unsigned int d; //定義一個變量d,并且分配了2個字節的RAM空間。 unsigned long e; //定義一個變量e,并且分配了4個字節的RAM空間。 unsigned long f; //定義一個變量f,并且分配了4個字節的RAM空間。 a=255; //把255賦值給變量a,a此時會是什么數?會超范圍溢出嗎? b=256; //把256賦值給變量b,b此時會是什么數?會超范圍溢出嗎? c=65535; //把65535賦值給變量c,c此時會是什么數?會超范圍溢出嗎? d=65536; //把65536賦值給變量d,d此時會是什么數?會超范圍溢出嗎? e=4294967295; //把4294967295賦值給變量e,e此時會是什么數?會超范圍溢出嗎? f=4294967296; //把4294967296賦值給變量f,f此時會是什么數?會超范圍溢出嗎? View(a); //把第1個數a發送到電腦端的串口助手軟件上觀察。 View(b); //把第2個數b發送到電腦端的串口助手軟件上觀察。 View(c); //把第3個數c發送到電腦端的串口助手軟件上觀察。 View(d); //把第4個數d發送到電腦端的串口助手軟件上觀察。 View(e); //把第5個數e發送到電腦端的串口助手軟件上觀察。 View(f); //把第6個數f發送到電腦端的串口助手軟件上觀察。 while(1) { } } /\*---C語言學習區域的結束。-----------------------------------------------\*/ 在電腦串口助手軟件上觀察到的程序執行現象如下: 開始... 第1個數 十進制:255 十六進制:FF 二進制:11111111 第2個數 十進制:0 十六進制:0 二進制:0 第3個數 十進制:65535 十六進制:FFFF 二進制:1111111111111111 第4個數 十進制:0 十六進制:0 二進制:0 第5個數 十進制:4294967295 十六進制:FFFFFFFF 二進制:11111111111111111111111111111111 第6個數 十進制:0 十六進制:0 二進制:0 分析: 通過實驗結果,我們知道unsigned char變量最大能取值到255,如果非要賦值256就會超出范圍溢出后變成了0。unsigned int變量最大能取值到65535,如果非要賦值65536就會超出范圍溢出后變成了0。unsigned long變量最大能取值到4294967295,如果非要賦值4294967296就會超出范圍溢出后變成了0。 【14.7 如何在單片機上練習本章節C語言程序?】 直接復制前面章節中第十一節的模板程序,練習代碼時只需要更改“C語言學習區域”的代碼就可以了,其它部分的代碼不要動。編譯后,把程序下載進帶串口的51學習板,通過電腦端的串口助手軟件就可以觀察到不同的變量數值,詳細方法請看第十一節內容。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看