一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

3天內(nèi)不再提示

二進(jìn)制真值與機(jī)器值詳解

Q4MP_gh_c472c21 ? 來源:二進(jìn)制小總結(jié) ? 作者:二進(jìn)制小總結(jié) ? 2021-02-11 09:49 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

真值與機(jī)器值

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

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

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

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

符號位與數(shù)值位

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

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

原碼、反碼和補(bǔ)碼

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

通過上面的分析可以知道,使用補(bǔ)碼可以將所有計算都轉(zhuǎn)化為加法計算,這樣可以讓計算機(jī)底層對于整數(shù)計算變得簡單,反碼屬于歷史遺留,因?yàn)槠浯嬖凇?的問題。

原文標(biāo)題:二進(jìn)制原碼/反碼/補(bǔ)碼詳解,不懂的請看過來

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

責(zé)任編輯:haq

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

    關(guān)注

    2

    文章

    807

    瀏覽量

    42319
  • 計算機(jī)
    +關(guān)注

    關(guān)注

    19

    文章

    7662

    瀏覽量

    90765

原文標(biāo)題:二進(jìn)制原碼/反碼/補(bǔ)碼詳解,不懂的請看過來

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

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    偏移二進(jìn)制二進(jìn)制補(bǔ)碼如何和實(shí)際數(shù)據(jù)對應(yīng),如何轉(zhuǎn)換?

    偏移二進(jìn)制二進(jìn)制補(bǔ)碼如何和實(shí)際數(shù)據(jù)對應(yīng),如何轉(zhuǎn)換,請哪位高手解惑
    發(fā)表于 01-16 06:01

    bcd編碼的應(yīng)用 bcd與二進(jìn)制的區(qū)別

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

    hex格式和二進(jìn)制的區(qū)別

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

    在線二進(jìn)制編碼器:數(shù)據(jù)轉(zhuǎn)換的快捷通道

    在數(shù)字時代,數(shù)據(jù)的快速轉(zhuǎn)換與處理至關(guān)重要。二進(jìn)制編碼,作為計算機(jī)內(nèi)部數(shù)據(jù)表示的基礎(chǔ),將信息轉(zhuǎn)化為0和1的序列,為數(shù)字世界構(gòu)建了溝通的橋梁。然而,對于非專業(yè)用戶來說,手動進(jìn)行二進(jìn)制編碼既繁瑣又易出錯
    的頭像 發(fā)表于 11-15 09:01 ?1788次閱讀

    base64字符串轉(zhuǎn)換為二進(jìn)制文件

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

    ASCII碼和二進(jìn)制的轉(zhuǎn)換關(guān)系

    。ASCII碼使用7位二進(jìn)制數(shù)來表示128個不同的字符,包括大小寫英文字母、數(shù)字0-9以及一些控制字符和標(biāo)點(diǎn)符號。后來,ASCII碼被擴(kuò)展到了8位,即ASCII-8BIT,可以表示256個不同的字符。 二進(jìn)制
    的頭像 發(fā)表于 11-10 09:50 ?4005次閱讀

    二進(jìn)制編碼器的精度與分辨率

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

    二進(jìn)制編碼器與絕對編碼器的區(qū)別

    編碼器是工業(yè)自動化和機(jī)器人技術(shù)中不可或缺的組件,用于將機(jī)械位置或運(yùn)動轉(zhuǎn)換為電信號。二進(jìn)制編碼器和絕對編碼器是兩種常見的編碼器類型,它們各自有著獨(dú)特的特點(diǎn)和應(yīng)用場景。 二進(jìn)制編碼器 二進(jìn)制
    的頭像 發(fā)表于 11-06 09:54 ?1286次閱讀

    二進(jìn)制編碼器在自動化領(lǐng)域的作用

    二進(jìn)制編碼器是一種將二進(jìn)制信號轉(zhuǎn)換為數(shù)字信號的電子設(shè)備,廣泛應(yīng)用于自動化領(lǐng)域。 一、二進(jìn)制編碼器的工作原理 二進(jìn)制編碼器是一種將二進(jìn)制信號轉(zhuǎn)
    的頭像 發(fā)表于 11-06 09:53 ?939次閱讀

    二進(jìn)制編碼器在機(jī)器人中的應(yīng)用

    隨著科技的不斷進(jìn)步,機(jī)器人技術(shù)已經(jīng)成為現(xiàn)代工業(yè)、服務(wù)業(yè)乃至家庭生活中不可或缺的一部分。機(jī)器人的智能化程度不斷提高,這在很大程度上依賴于其傳感器系統(tǒng)。二進(jìn)制編碼器作為一種傳感器,能夠?qū)⑽锢砹哭D(zhuǎn)換
    的頭像 發(fā)表于 11-06 09:48 ?1155次閱讀

    二進(jìn)制編碼器的種類及特點(diǎn)

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

    二進(jìn)制編碼器應(yīng)用場景 二進(jìn)制編碼器與模擬編碼器比較

    編碼器是將信息從一種形式或格式轉(zhuǎn)換為另一種形式的設(shè)備。在數(shù)字和模擬系統(tǒng)中,編碼器扮演著至關(guān)重要的角色。二進(jìn)制編碼器和模擬編碼器是兩種常見的編碼器類型,它們在不同的應(yīng)用場景中有著各自的優(yōu)勢和局
    的頭像 發(fā)表于 11-06 09:45 ?1257次閱讀

    二進(jìn)制編碼器工作原理 如何選擇二進(jìn)制編碼器

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

    二進(jìn)制補(bǔ)碼及與原碼的互相轉(zhuǎn)換方法

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

    計算機(jī)采用二進(jìn)制的原因不包括什么

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