數據的二進制表示

基礎定義

: IC 電子元件有不同種形狀,但是其內部的組成單元稱爲一個個的引腳。只有直流電壓0V 或 5V 兩個狀態。與 “0” 與“1”的表達不謀而合
在這裏插入圖片描述

字節:8 位二進制數被稱爲一個 字節

爲什麼擬定 8 位爲一個字節?
因爲 8 位能夠涵蓋基本的字符編碼(英文 26 個字母大小寫 + 基本符號位等)

實例:

 一個英文字母-----佔一字節

一箇中文字-------佔二個字節

一個整數---------佔二個字節

一個實數---------佔四個字節

圖:
在這裏插入圖片描述

二進制

位權:進制數值中某個位的權重值
例如:
十進制數 39 的各個數位的數值,並不只是簡單的 3 和 9
3 表示的是3×10 = 30,9 表示的是 9×1 = 9
這裏和各個數位的數值相乘的 10 和 1,就是位權

基數:數值的表現方法,進位計數制中各數位上可能有的數值的個數。十進制數的基數是 10,二進制數的基數是 2

二進制轉十進制的理解
核心:基數 x 位權

十進制數:
如 39 這個十進制數,表示的就是 30+9

二進制數:
00100111 用十進制數表示的話是 39,因爲(0×128)+(0×64)+(1×32)+(0×16) +(0×8)+(1×4)+(1×2)+(1×1)= 39

補數:將二進制數的值取反後加 1 的結果

爲什麼使用補數後就能正確地表示負數了呢?
實際上是驗證:補數與原來的數相加是否爲 0
“將二進制數的值取反後加 1 的結果,和原來的值相加,結果爲 0”這一法則
例子:
00000001+11111111
圖:
在這裏插入圖片描述

減法運算
計算機在做減法運算時,實際上內部是在做加法運算。

進位法則: 對各個進制的數都滿足,滿基數,向(當前位權+1)進1
備註:樓主表示糾結這個概念了半天| :( |

符號位
二進制數中表示負數值時,一般會把最高位作爲符號來使用,因此我們把這個最高位稱爲符號位。符號位是 0 時表示正數 ,符號位是1 時表示負數。
錯誤事例
“1 的二進制數是 00000001,因此-1 就是 10000001”
正確事例
“1 的二進制數是 00000001,因此-1 就是 11111111”

符號位的應用
有的可以處理負數,有的則不能處理。例如,C 語言的數據類型中,既有不能處理負數的 unsigned short 類型,也有能處理負數的 short 類型。這兩種類型,都是 2 字節(= 16 位)的變量,都能表示 2 的 16 次冪 = 65536 種值,這一點是相同的。
不過,值的範圍有所不同,short 類型是- 32768~32767,unsigned short 類型是 0~65535。此外,short 類型和 unsigned short 類型的另一個 不 同 點 在於,short 類 型 是 將 最 高 位 爲 1 的 數 值 看 作 補 數, 而unsigned short 類型則是 32768 以上的值。

爲什麼總說最高位爲 1 時是負數,爲 0 時是正數?那麼十進制的255用二進制表示就是1111-1111,可是二進制最高位是1的時候是負數,這個應該怎麼理解?

整數分爲“有符號整數”和“無符號整數”,以8位的二進制而言:
如果按無符號整數來用,那麼最小值0(二進制0000-0000),最大值是255(1111-1111),總數是256個
而如果作爲有符號整數來用,則最小值爲-128(二進制1000-0000),最大值爲127(0111-1111),總數也還是256個
題目中的 " 1111-1111 " 在 “有符號整數”中就不能夠表示爲 255 了,所以在依據最高位來判斷正負數時,應該視具體情況而定

邏輯右移與算數右移的區別
算數右移有移位後在最高位補 0 和補 1 兩種情況(視數值爲正數或者負數)
當二進制數的值表示圖形模式而非數值時,移位後需要在最高位補 0。類似於霓虹燈往右滾動的效果。這就稱爲 邏輯右移
圖:
在這裏插入圖片描述
符號擴充
符號擴充就是指在保持值不變的前提下將其轉換成 16 位和 32 位的二進制數
不管是正數還是用補數表示的負數,都只需用符號位的值(0 或者 1)填充高位即可
圖:
在這裏插入圖片描述
邏輯運算
包括邏輯非(NOT 運算)、邏輯與(AND 運 算)、邏輯或(OR 運算)和邏輯異或(XOR 運算 A)四種

邏輯異或 指的是排斥相同數值的運算。“兩個數值不同”
圖:
在這裏插入圖片描述

發佈了240 篇原創文章 · 獲贊 91 · 訪問量 19萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章