在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

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

3天內不再提示

二進制真值與機器值詳解

Q4MP_gh_c472c21 ? 來源:二進制小總結 ? 作者:二進制小總結 ? 2021-02-11 09:49 ? 次閱讀

真值與機器值

真值很好理解,就是十進制的數字前面再加上正負號,這是人類可以簡單識別的數字,比如 0、±16、±1084、±10.34、±100.453 等,而正數前面的+符號可以省略。機器值從字面理解就是機器(計算機)識別的值,實際上也確實是這個意思。

計算機中通過高低電平表示1或者0,這樣就可以表示一個二進制的數值。一個1或者0表示的數值位稱為一個bit,而計算機中存儲和傳輸數據的最小單位是一個字節(byte)也就是8個bit,所以說計算機所有計算本質上都是基于二進制。

在計算機中,我們可以使用1個或者多個字節存儲一個數,但無論是多少個字節,其大小肯定是固定的,同時其所能表示的數值的范圍也是固定的。比如說對使用1個字節存儲的數進行計算或者傳輸,那么這個數所能表示的最小值為00000000最大值為11111111,轉換為十進制為0 ~ 255。那么無論對這個數做了什么計算,無論計算之后的結果為多少都不能超出這個范圍,同理使用2個字節存儲的數范圍為0 ~ 65535。

由于很多時候一個數據需要使用2個或者2個以上的字節表示,那么這種數據無論是存儲還是傳輸的時候都會有一個順序的問題,也就是大小端對齊(字節序)問題。在存儲時高位字節在前為大端對齊,反之為小端對齊。在數據傳輸時先傳輸高位字節為大端字節序,反之為小端字節序。目前絕大多數平臺內部都是小端對齊的方式存儲數據,而大多數通信協議卻都是用大端字節序傳輸數據,所以這一點值得注意一下。

符號位與數值位

計算機中使用二進制存儲傳輸和計算數值,但是不能只有數值,計算的時候還得有正負之分。在計算機中使用最高bit位的數值來表示正負號,這個bit位稱作符號位。

計算機中符號位的值為0表示這個數為正數,符號位值為1表示這個樹為負數。由于符號位表示符號所以其不表示具體的值,除開符號位剩余的bit位用來表示數值也就是數值位。比如1個字節的整數00000001,其中最高bit(最左邊)位的0為符號位,表示這個數為正數,數值位為1,所以其真值為1。同理2個字節的整數00000000_0000001,其真值也是1。

原碼、反碼和補碼

計算機只識別機器碼,其實也就是二進制數,并且使用最高bit位表示符號位。那么兩個真值為8和-8的8位整數,它們在計算機內部的機器值是否就分別是00001000和10001000?其實并不是,這只是8和-8的原碼,而機器算計中的機器值是使用補碼存儲和計算的。

計算機中,正數的原碼、反碼和補碼是一樣的,所以上面那個例子中,真值為8的8位整數的機器值確實是00001000,但是-8就不是這么回事了。負數的首先將原碼數值位按位取反得到反碼,然后再將反碼數值位加1之后則得到補碼。我們來看一下-8這個例子,其原碼為10001000,數值位按位取反之后的反碼為11110111,然后數值位加1之后的補碼為11111000。所以真值為-8的8位整數在計算機中的機器值為11111000,我們來看下面這張表:

eff534f0-57dd-11eb-8b86-12bb97331649.png

注:int8為8bit位整數占用1byte,int16為16bit位整數占用2byte。

剛說的是原碼轉補碼的步驟,其實補碼轉原碼的步驟是一樣的。首先正數的原碼補碼是一樣的不需要轉換,我們看負數11111000,首先將數值位按位取反得到10000111,然后再將數值位加1得到10001000。我們再來看一個8位的整數10000000,是不是發現這個數原碼和補碼是一樣的,那么這個看起來像是“-0”的數是怎么回事呢?其實可以將這個數看成是一個特殊值,它的真實含義就是最小值。8位的這種“-0”的真值為-128,16位的這種“-0”真值為-32768。所以只需要記住100...000這種補碼就是最小值就行,我們看下面的這張表:

f035981a-57dd-11eb-8b86-12bb97331649.png

有兩對8bit位的整數4、8和4、-8,我們分別看一下他們在計算機中是怎么做加法計算的。首先看4和8的補碼分別為00000100和00001000,只需要將每個bit位相加就行,結果為00001100,其真值為12。我們再來4和-8的計算,它們補碼分別為00000100和11111000,然后將它們按位相加(注意符號位也要做加法)得到11111100,其原碼為10000100,真值為-4。

再來看一下減法計算,比如8bit位的整數-8減去4,首先可以將4處理一下可以變為(-8) + (-4),這樣是不是就又變為了加法了?-8和-4的補碼分別為11111000和11111100,將它們按位相加得到補碼11110100(注意這是8位的整數,超出部分發生了溢出),轉換成原碼為10001100,真值為-12。

再來看一下乘法,比如8bit位的整數-8乘以13,他們的補碼分別為11111000和00001101。其中-8為被乘數,13為乘數,并且乘數有8個bit位,需要將被乘數按位與和位計算8次然后將結果相加,看如下分析:

被乘數的第0個bit位值為1,將被乘數乘以1然后左移0位得到:11111000;

被乘數的第1個bit位值為0,將被乘數乘以0然后左移1位得到:00000000;

被乘數的第2個bit位值為1,將被乘數乘以1然后左移2位得到;11100000;

被乘數的第3個bit位值為1,將被乘數乘以1然后左移3位得到;11000000;

被乘數的第4個bit位值為0,將被乘數乘以0然后左移4位得到;00000000;

被乘數的第5個bit位值為0,將被乘數乘以0然后左移5位得到;00000000;

被乘數的第6個bit位值為0,將被乘數乘以0然后左移6位得到;00000000;

被乘數的第7個bit位值為0,將被乘數乘以0然后左移7位得到;00000000;

由此可以得計算得到8組補碼(注意上面做位移涉及到的整數溢出,只能是8個bit位),然后將它們做加法得到10011000(也存在整數溢出)轉換為原碼為11101000,真值為-104。

至于除法則是使用交替加減法的方式,本文只是對計算原理做一下擴展,這里不再繼續深入做介紹,如果有想了解的可以自行上網查詢。

通過上面的分析可以知道,使用補碼可以將所有計算都轉化為加法計算,這樣可以讓計算機底層對于整數計算變得簡單,反碼屬于歷史遺留,因為其存在±0的問題。

原文標題:二進制原碼/反碼/補碼詳解,不懂的請看過來

文章出處:【微信公眾號:嵌入式ARM】歡迎添加關注!文章轉載請注明出處。

責任編輯:haq

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 二進制
    +關注

    關注

    2

    文章

    805

    瀏覽量

    42192
  • 計算機
    +關注

    關注

    19

    文章

    7637

    瀏覽量

    90332

原文標題:二進制原碼/反碼/補碼詳解,不懂的請看過來

文章出處:【微信號:gh_c472c2199c88,微信公眾號:嵌入式微處理器】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    偏移二進制二進制補碼如何和實際數據對應,如何轉換?

    偏移二進制二進制補碼如何和實際數據對應,如何轉換,請哪位高手解惑
    發表于 01-16 06:01

    bcd編碼的應用 bcd與二進制的區別

    BCD(Binary-Coded Decimal)編碼是一種二進制編碼形式,用于表示十進制數字。它將每個十進制數字(0-9)直接編碼為一個四位二進制數。BCD編碼的主要優點是易于閱讀和
    的頭像 發表于 12-20 17:11 ?2903次閱讀

    hex格式和二進制的區別

    HEX格式和二進制在多個方面存在顯著的區別。以下是對這兩者的對比: 一、定義與表示方式 HEX格式 : HEX,全稱為Intel HEX,是一種用于存儲和傳輸數據到嵌入式系統(如單片機)的文件格式
    的頭像 發表于 11-18 15:24 ?1599次閱讀

    在線二進制編碼器:數據轉換的快捷通道

    在數字時代,數據的快速轉換與處理至關重要。二進制編碼,作為計算機內部數據表示的基礎,將信息轉化為0和1的序列,為數字世界構建了溝通的橋梁。然而,對于非專業用戶來說,手動進行二進制編碼既繁瑣又易出錯
    的頭像 發表于 11-15 09:01 ?1672次閱讀

    base64字符串轉換為二進制文件

    Base64是一種編碼方法,用于將二進制數據轉換為ASCII字符串。這種編碼通常用于在不支持二進制數據的系統中傳輸數據,例如電子郵件或網頁。將Base64字符串轉換為二進制文件的過程相對簡單,但需要
    的頭像 發表于 11-10 10:55 ?2720次閱讀

    ASCII碼和二進制的轉換關系

    。ASCII碼使用7位二進制數來表示128個不同的字符,包括大小寫英文字母、數字0-9以及一些控制字符和標點符號。后來,ASCII碼被擴展到了8位,即ASCII-8BIT,可以表示256個不同的字符。 二進制
    的頭像 發表于 11-10 09:50 ?3760次閱讀

    二進制編碼器的精度與分辨率

    編碼器是一種將模擬信號(如電壓、溫度等)轉換為二進制代碼的設備。它通常包含一個模數轉換器(ADC),該轉換器通過比較輸入信號與一系列參考電壓來確定輸入信號的。編碼器的輸出是一個二進制數,表示輸入信號的數字等價。
    的頭像 發表于 11-06 09:56 ?1121次閱讀

    二進制編碼器在自動化領域的作用

    二進制編碼器是一種將二進制信號轉換為數字信號的電子設備,廣泛應用于自動化領域。 一、二進制編碼器的工作原理 二進制編碼器是一種將二進制信號轉
    的頭像 發表于 11-06 09:53 ?864次閱讀

    二進制編碼器在機器人中的應用

    隨著科技的不斷進步,機器人技術已經成為現代工業、服務業乃至家庭生活中不可或缺的一部分。機器人的智能化程度不斷提高,這在很大程度上依賴于其傳感器系統。二進制編碼器作為一種傳感器,能夠將物理量轉換
    的頭像 發表于 11-06 09:48 ?937次閱讀

    二進制編碼器的種類及特點

    二進制編碼器是一種電子電路,用于將二進制信號轉換為其他格式,如十進制、格雷碼等。以下是一些常見的二進制編碼器種類及其特點: 優先編碼器(Priority Encoder) : 特點 :
    的頭像 發表于 11-06 09:47 ?1344次閱讀

    二進制編碼器應用場景 二進制編碼器與模擬編碼器比較

    編碼器是將信息從一種形式或格式轉換為另一種形式的設備。在數字和模擬系統中,編碼器扮演著至關重要的角色。二進制編碼器和模擬編碼器是兩種常見的編碼器類型,它們在不同的應用場景中有著各自的優勢和局
    的頭像 發表于 11-06 09:45 ?1178次閱讀

    二進制編碼器工作原理 如何選擇二進制編碼器

    編碼器通常有多個輸入端(通常為2的n次方個,其中n是編碼器的位數),和一個或多個輸出端。每個輸入端對應一個二進制位,而輸出端則表示輸入的二進制。 優先編碼器 : 優先編碼器是一種特殊的二進制
    的頭像 發表于 11-06 09:44 ?2361次閱讀

    二進制補碼及與原碼的互相轉換方法

    大沙把一些基礎的知識說清楚,本文介紹二進制補碼及與原碼的轉換方法。 先說原碼,原碼?是一種計算機中對數字的二進制定點表示方法。在原碼表示法中,數值前面增加了一位符號位,最高位為符號位,0表示正數,1
    的頭像 發表于 09-19 22:25 ?1371次閱讀

    計算機采用二進制的原因不包括什么

    計算機采用二進制的原因主要是基于其物理實現的簡便性、邏輯運算的簡化、以及電子元件的穩定性。然而,這個問題要求我們探討計算機采用二進制的原因不包括什么,這實際上是一個反向思考的問題。在回答這個問題之前
    的頭像 發表于 09-04 17:03 ?1158次閱讀

    二進制處理中的一些技巧

    二進制和十進制的處理中,有時候一些小技巧是很有用的。 1、把十進制數轉換成二進制數 (1)在MATLAB中有一個函數dec2bin,可以把正整數轉換為2
    的頭像 發表于 07-05 11:51 ?913次閱讀
    主站蜘蛛池模板: 男女性高爱潮免费的国产 | 欧美色欧 | 激情五月网站 | 婷婷综合激六月情网 | 天天草天天爽 | 综合99| 国产精品va一区二区三区 | 伊人黄色 | 天堂最新版资源www在线 | 欧美性一区二区三区五区 | 伦理片日本韩国电影三级在线观看 | 日本三人交xxx69视频 | 美女又爽又黄视频 | 国产亚洲欧美一区二区 | 欧美最猛黑人xxxx黑人猛交69 | 欧美一区精品 | 日本又粗又长一进一出抽搐 | 韩国特黄特色a大片免费 | 一级毛片免费全部播放完整 | 正在播放亚洲一区 | 国产综合精品久久久久成人影 | 韩国三级观影久久 | 国产在线精品美女观看 | 男女性生动态免费视频 | 奇米888在线看奇米999 | 免费国产综合视频在线看 | 午夜免费啪在线观看视频网站 | 国产高清色播视频免费看 | 黄色毛片免费看 | h视频国产 | 被啪漫画羞羞漫画 | 在线天堂中文www官网 | 国产男女交性视频播放免费bd | 高清一级片| 亚洲精品福利你懂 | 天天拍天天干 | 国产你懂 | 亚洲高清日韩精品第一区 | 九九热精品视频在线播放 | 亚洲伦理中文字幕一区 | 亚洲国产成人久久一区www |