0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學(xué)習在線(xiàn)課程
  • 觀(guān)看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區
會(huì )員中心
創(chuàng )作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內不再提示

計算機基礎知識之二進(jìn)制

jf_78858299 ? 來(lái)源:前端柒八九 ? 作者:前端柒八九 ? 2023-03-31 16:06 ? 次閱讀

C/Java/JavaScript等高級語(yǔ)言編寫(xiě)的程序中, 「數值」 、 「字符串」「圖像」 在計算機內部都是以 「二進(jìn)制數值」 的形式來(lái)表現的

?

用二進(jìn)制數表示計算機信息的原因

計算機內部是由IC這種電子部件構成的。IC的所有 「引腳」 ,只有 「直流電壓」 0V5V兩個(gè)狀態(tài)。

?也就是說(shuō),IC的一個(gè)引腳,「只能表示兩個(gè)狀態(tài)」

?

IC的這個(gè)特性,決定了計算機的信息數據只能用二進(jìn)制數來(lái)處理。由于1位(一個(gè)引腳)只能表示兩個(gè)狀態(tài),所以二進(jìn)制的計數方式就變成了0、1、10、11、100...這種形式。

?計算機處理信息的 「最小單位」 -- 「位」 ,就相當于二進(jìn)制中的一位。

?

圖片

IC的一個(gè)引腳表示二進(jìn)制的1位

二進(jìn)制的位數一般是8位、16位、32位···· 「也就是8的倍數」 ,這是因為計算機所處理的信息的 「基本單位」 是8位二進(jìn)制數。8位二進(jìn)制數被稱(chēng)為一個(gè) 「字節」 。

?字節是最基本的**「信息計量單位」**

?

  • 「位」 是最小單位
  • 「字節」 是基本單位

?內存和磁盤(pán)都使用 「字節單位」 來(lái)存儲和讀寫(xiě)數據,使用 「位單位」 則無(wú)法讀寫(xiě)數據。

?

用字節單位處理數據時(shí),如果數字小于存儲數據的字節數(=二進(jìn)制數的位數),那么高位上就 「用0填補」 。例如,100111這個(gè)6位二進(jìn)制數,用8位(=1字節)表示時(shí)為00100111。

在程序中,即使是用 「十進(jìn)制」「文字」 等記錄信息,在 「編譯」 后也會(huì )轉換成二進(jìn)制的值。

圖片

對于用二進(jìn)制數表示的信息,計算機不會(huì )區分它是數值、文字,還是某種圖片的模式,而是 「根據編寫(xiě)程序的各位對計算機發(fā)出的指示進(jìn)行信息的處理」 。

例如,00100111這樣的二進(jìn)制數,即可以將其當做 「數值」 做加法運算,也可以當成(單引號)文字而顯示在顯示器上。

?具體進(jìn)行何種處理,取決于**「程序的編寫(xiě)方式」**

?


什么是二進(jìn)制

二進(jìn)制數的值換成十進(jìn)制數的值,只需將二進(jìn)制的各 「數位」 的值和 「位權」 相乘,然后將相乘的結果相加即可。

圖片

位權

十進(jìn)制數39的各個(gè) 「數位」 的數值,并不只是簡(jiǎn)單的39。

  • 3表示的是3×10=30
  • 9表示的是9×1=9

這里的各個(gè) 「數位」 的數值相乘的101就是 「位權」 。數字的位數不同,位權也不一樣。

  • 第一位(最右邊的一位)是10的0次冪(=1)
  • 第二位是10的1次冪(=10)
  • 第三位是10的2次冪(=100)
  • 以此類(lèi)推

? 「位權」 的思考方式同樣適用于二進(jìn)制

?

  • 第一位是2的0次冪(=1)
  • 第二位是2的1次冪(=2)
  • 第三位是2的2次冪(=4)
  • 以此類(lèi)推

〇〇的xx次冪」 表示位權,

  • 其中,十進(jìn)制數的情況下〇〇部分是10,二進(jìn)制數的情況下則為2。〇〇被稱(chēng)為**「基數」**
  • xx,在任何進(jìn)制數中都是**「數的位數-1」**
    • 即第一位是1-1=0次冪
    • 第二位是2-1=1次冪
    • 第三位是3-1=2次冪

?數值,表示的就是構成數值的各 「數位」 的數值和 「位權」 相乘后相加的結果

?

二進(jìn)制數00100111用十進(jìn)制數表示的話(huà)是39,因為(0×128)+(0×64)+(1×32)+(0×16)+(0×8)+(1×4)+(1×2)+(1×1)= 39


移位運算和乘除運算的關(guān)系

和十進(jìn)制數一樣, 「四則運算」 同樣也可以使用在二進(jìn)制數中,只要注意 「逢二進(jìn)位」 即可。

移位運算

「移位運算」 指的是將二進(jìn)制數值的各數位進(jìn)行 「左右移位」 的運算。

移位有 「左移」向高位方向)和 「右移」向低位方向)兩種。

假設存在如下處理。把變量a中保存的十進(jìn)制數值39左移兩位后再將運算結果存儲到變量b中。

a = 39;
b = a<<2;

<<這個(gè)運算符表示 「左移」 , 「右移」 時(shí)用>>運算符。<<運算符和>>運算符的 「左側」「被移位的值」 , 「右側」 表示要移位的 「位數」 。

在前面我們介紹過(guò),無(wú)論程序中使用的是幾進(jìn)制,計算機內部都會(huì )將其準換成二進(jìn)制數來(lái)處理,因此都能進(jìn)行 「移位操作」 。

?針對 「左移運算」 ,空出來(lái)的低位要進(jìn)行 「補0操作」 。

?

而右移操作,由于情況特殊,我們后面再做詳細介紹。

此外,移位操作使最高位或最低位 「溢出」 的數字,直接丟棄就可以了。

下圖,就是上述代碼的運行過(guò)程。圖片

? 「移位運算」 就好比使用二進(jìn)制表示的 「圖片模式」 像霓虹燈一樣 「左右流動(dòng)」 的樣子

?


補數

二進(jìn)制數中表示 「負數」 值時(shí),一般會(huì )把 「最高位作為符號來(lái)使用」 ,因此我們把這個(gè)最高位稱(chēng)為**「符號位」**

  • 符號位是0時(shí)表示正數
  • 符號位是1時(shí)表示負數

計算機在做減法運算時(shí),實(shí)際上內部是在 「加法運算」 。在表示負數時(shí)就需要使用 「二進(jìn)制的補數」 。

?補數就是**「用正數來(lái)表示負數」**

?

為了能獲取補數,需要**「將二進(jìn)制數的各位的數值全部取反,然后再將結果加1」**

例如,用8位二進(jìn)制數表示-1時(shí),只需要求得1,也就是00000001的補數即可。

  • 將各數位的0取反加1,1取反成0
  • 再將取反的結果加1
  • 最后轉化成11111111

圖例如下:圖片

1-1在計算機內部是如何實(shí)現的

1-1,也就是1+(-1),一眼就能知道答案,結果是0。

通過(guò)上文我們得知,-1用二進(jìn)制表示為11111111。那么,在計算機內部計算1-1,就變成了。

00000001 + 11111111

結果確實(shí)為0(=00000000)。這個(gè)運算過(guò)程中出現了 「最高位溢出」 的情況, 「對于溢出的位,計算機會(huì )直接忽略掉」 。

即在8位的范圍內進(jìn)行計算時(shí)候,100000000這個(gè)9位二進(jìn)制數就會(huì )被認為是00000000這一8位二進(jìn)制數。

圖片

?補數求解的變換方法就是**「取反加1」**

?

將二進(jìn)制數的值取反加1的結果,和原來(lái)的值相加,結果為0


邏輯右移和算術(shù)右移的區別

右移有移位后在最高位補0和補1兩種情況。當二進(jìn)制數的值表示 「圖形模式」 而非數值時(shí)候,移位后需要在最高位補0。這就稱(chēng)為 「邏輯右移」 。

圖片

將二進(jìn)制數作為 「帶符號的數值」 進(jìn)行運算時(shí),移位后要在最高位填充 「移位前」 符號位的值(01)。這就稱(chēng)為 「算術(shù)右移」 。

  • 如果數值是用補數表示的負數值,那么右移后再空出來(lái)的最高位補1
  • 如果是正數,只需要在最高位補0即可

?只有在 「右移」 時(shí)才必須區分 「邏輯位移」 和**「算術(shù)位移」**

?

圖片

?左移時(shí),無(wú)論是 「圖形模式」邏輯左移)還是 「相乘運算」算術(shù)左移),都只需要在空出來(lái)的 「低位補0」 即可。

?

符號擴充

以8位二進(jìn)制數為例, 「符號擴充」 就是指在保存值不變的前提下將其準換成16位和32位的二進(jìn)制。

圖片不管是正數還是用補數表示的負數,都只需要 「用符號位的值(0或1)填充高位」 即可。


邏輯運算

在運算中,與邏輯相對的術(shù)語(yǔ)是算術(shù)。

  • 將二進(jìn)制數表示的信息作為 「四則運算」 的數值來(lái)處理就是**「算術(shù)」**
  • 像圖形模式,將數值處理為單純的01的羅列就是**「邏輯」**

計算機能處理的運算,大體可分為 「算術(shù)運算」「邏輯運算」 。

  • 「算術(shù)運算」 是指加減乘除四則運算
  • 「邏輯運算」 是指對二進(jìn)制數 「各數字位的01分別進(jìn)行處理」 的運算
    • 邏輯 「非」NOT運算)
    • 邏輯 「與」 (AND運算)
    • 邏輯 「或」OR運行)
    • 邏輯 「異或」XOR運算)

「邏輯非」 是指的是0變成1、1變成0的取反操作。圖片

「邏輯與」 指的是”兩個(gè)都是1“時(shí),運算結果為1,其他情況下運算結果都為0的運算。

圖片

邏輯與的真值表

「邏輯或」 指的是”至少有一方是1“時(shí),運算結果為1,其他情況下運算結果都是0的運算

圖片

邏輯或的真值表

「邏輯異或」 指的是排斥相同數值的運算?!皟蓚€(gè)數值不同”,也就是說(shuō),當“其中一方是1,另一方是0“時(shí)運算結果是1,其他情況下結果都是0.

圖片

邏輯異或的真值表

?在進(jìn)行邏輯運算時(shí),都是對相對應的 「各數位」 分別進(jìn)行運算

?

「大家不要把二進(jìn)制數表示的值當作數值,而應該把它看作是圖形或者開(kāi)關(guān)上的ON/OFF」 。并且, 「邏輯運算」 的運算對象不是數值,因此不會(huì )出現進(jìn)位的情況。

下圖表示的是對NI的兩個(gè)字母的圖形模式進(jìn)行各種 「邏輯運算」 后的結果。假設白色部分表示1,黑色部分表示0.圖片

聲明:本文內容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權轉載。文章觀(guān)點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習之用,如有內容侵權或者其他違規問(wèn)題,請聯(lián)系本站處理。 舉報投訴
  • 二進(jìn)制
    +關(guān)注

    關(guān)注

    2

    文章

    719

    瀏覽量

    41335
  • 計算機
    +關(guān)注

    關(guān)注

    19

    文章

    6823

    瀏覽量

    85491
  • JAVA
    +關(guān)注

    關(guān)注

    19

    文章

    2911

    瀏覽量

    103283
  • 字符串
    +關(guān)注

    關(guān)注

    1

    文章

    553

    瀏覽量

    20266
  • javascript
    +關(guān)注

    關(guān)注

    0

    文章

    513

    瀏覽量

    53492
收藏 人收藏

    評論

    相關(guān)推薦

    計算機為什么使用二進(jìn)制來(lái)表達

    在生活中,人們已經(jīng)習慣用十進(jìn)制來(lái)計數,0~9的發(fā)明是人類(lèi)的偉大進(jìn)步,從此就可以用0~9這十個(gè)數字的組合能表示任何大小的數字。于是初學(xué)計算機的人往往會(huì )問(wèn)的問(wèn)題是,計算機為什么使用二進(jìn)制來(lái)
    的頭像 發(fā)表于 10-30 15:44 ?667次閱讀
    <b class='flag-5'>計算機</b>為什么使用<b class='flag-5'>二進(jìn)制</b>來(lái)表達

    計算機基礎知識

    受EDVAC方案的影響,采用了二進(jìn)制和程序存儲方式,運算速度為每秒670次加減法,每秒170次乘法,程序和數據的輸入采用紙帶,輸出采用電傳打字機,這樣,世界上第一臺程序存儲式計算機的殊榮由EDSAC奪得。以后的計算機采用的都是程
    發(fā)表于 03-08 15:50

    計算機硬件怎樣執行二進(jìn)制程序的

    計算機怎樣將二進(jìn)制數當成指令執行的?
    發(fā)表于 12-11 08:54

    單片機開(kāi)發(fā)為什么要用二進(jìn)制?

    電路來(lái)進(jìn)行計數,容易實(shí)現,容易運算,方便可靠。所以,在計算機中,數據和其它字母、符號等都是以二進(jìn)制的形式來(lái)表示并進(jìn)行運算處理的,或者說(shuō),計算機只認識二進(jìn)制的數。
    發(fā)表于 12-10 10:55

    微型計算機基礎知識簡(jiǎn)析

    第一章微型計算機基礎第一節 數制及數制間轉換一、數制:N進(jìn)制數由N個(gè)數(0,1,.......N-1)組成,基數為N,逢N進(jìn)一二、數制間的轉換 n進(jìn)制->十進(jìn)制(降冪法):按權展開(kāi),各
    發(fā)表于 07-16 08:18

    為什么計算機內部進(jìn)行二進(jìn)制運算,而不是十進(jìn)制運算?

    閑來(lái)沒(méi)事在b站上看李永樂(lè )老師講的這個(gè)視頻,覺(jué)得挺有意思的。這篇文章主要是記一下筆記。本篇文章里面的數字若沒(méi)有特殊指明,默認為二進(jìn)制數字。你們有沒(méi)有這樣的疑問(wèn):為什么計算機內部進(jìn)行二進(jìn)制運算,而不是
    發(fā)表于 07-23 09:59

    二進(jìn)制數的運算及加法電路

    前言上篇 計算機組成原理第1章 計算機基礎知識1.1 數制1.2 邏輯代數(布爾代數)1.3 邏輯電路1.4 二進(jìn)制數的運算及加法電路第2章 微型
    發(fā)表于 09-10 07:34

    計算機基礎知識

    前言《MSP430單片機應用基礎與實(shí)踐》(華中科技大學(xué)出版社)------第0章------計算機基礎知識(本文章作備忘錄使用)1.進(jìn)制轉換2.數值數據的表示3.計算機的碼制
    發(fā)表于 11-29 06:03

    二進(jìn)制編碼和二進(jìn)制數據

    二進(jìn)制編碼和二進(jìn)制數據   二進(jìn)制編碼是計算機內使用最多的碼制,它只使用兩個(gè)基本符號"0"和"1",并且通過(guò)由這兩個(gè)符號組成的
    發(fā)表于 10-13 16:22 ?4581次閱讀

    計算機基礎知識介紹

    計算機基礎知識計算機基礎知識計算機基礎知識
    發(fā)表于 12-03 16:13 ?0次下載

    計算機二進(jìn)制概念和進(jìn)制運算的詳細資料簡(jiǎn)介

    本文檔的主要內容詳細介紹的是計算機二進(jìn)制概念和進(jìn)制運算的詳細資料簡(jiǎn)介。
    發(fā)表于 12-11 17:34 ?15次下載
    <b class='flag-5'>計算機</b>的<b class='flag-5'>二進(jìn)制</b>概念和<b class='flag-5'>進(jìn)制</b>運算的詳細資料簡(jiǎn)介

    計算機在硬件層面究竟是怎么表示二進(jìn)制 1

    本篇文章來(lái)看看計算機在硬件層面究竟是怎么表示二進(jìn)制的,CPU究竟是怎么實(shí)現的?通過(guò)本文的學(xué)習,我們也可以反過(guò)來(lái)明白為什么計算機會(huì )采用二進(jìn)制了。
    的頭像 發(fā)表于 02-01 15:28 ?901次閱讀
    <b class='flag-5'>計算機</b>在硬件層面究竟是怎么表示<b class='flag-5'>二進(jìn)制</b> 1

    計算機在硬件層面究竟是怎么表示二進(jìn)制 2

    本篇文章來(lái)看看計算機在硬件層面究竟是怎么表示二進(jìn)制的,CPU究竟是怎么實(shí)現的?通過(guò)本文的學(xué)習,我們也可以反過(guò)來(lái)明白為什么計算機會(huì )采用二進(jìn)制了。
    的頭像 發(fā)表于 02-01 15:28 ?709次閱讀
    <b class='flag-5'>計算機</b>在硬件層面究竟是怎么表示<b class='flag-5'>二進(jìn)制</b> 2

    10進(jìn)制轉換為二進(jìn)制的算法

    進(jìn)制轉換為二進(jìn)制計算機科學(xué)中非?;A且重要的概念之一。在理解和應用計算機科學(xué)的基礎知識時(shí),掌握這個(gè)算法是至關(guān)重要的。 在開(kāi)始講解十
    的頭像 發(fā)表于 01-15 10:32 ?814次閱讀

    如何實(shí)現二進(jìn)制和BCD碼數據的相互轉變?

    如何實(shí)現二進(jìn)制和BCD碼數據的相互轉變? 二進(jìn)制碼是將十進(jìn)制數字表示為二進(jìn)制數和十進(jìn)制數的一種表示方法。在
    的頭像 發(fā)表于 02-18 14:51 ?970次閱讀
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看