国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

什么是原碼、反碼和補(bǔ)碼

這篇具有很好參考價(jià)值的文章主要介紹了什么是原碼、反碼和補(bǔ)碼。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

什么是原碼、反碼和補(bǔ)碼

1、機(jī)器數(shù)

前言

一個(gè)數(shù)在計(jì)算機(jī)中的表示形式是二進(jìn)制的話,這個(gè)數(shù)其實(shí)就叫機(jī)器數(shù)。

什么是原碼、反碼和補(bǔ)碼

機(jī)器數(shù)通常是帶有符號(hào)的(指有正數(shù)和負(fù)數(shù)之分),計(jì)算機(jī)用最高位存放符號(hào),這個(gè) bit 一般叫做符號(hào)位。 正數(shù)的符號(hào)位為 0, 負(fù)數(shù)的符號(hào)位為 1。比如,十進(jìn)制中的數(shù) +7 ,計(jì)算機(jī)字長(zhǎng)為8位,轉(zhuǎn)換成二進(jìn)制就是 0 0 0 0 0 1 1 1一個(gè) byte 有 8bit,有效的取值范圍是 -128 ~ +127)。

如果是 -7 ,就是 1 0 0 0 0 1 1 1 。一個(gè)存儲(chǔ)的二進(jìn)制碼分原碼、反碼、補(bǔ)碼,下面我們就來介紹一下什么是原碼、反碼、補(bǔ)碼

Notes

計(jì)算機(jī)底層使用二進(jìn)制形式的補(bǔ)碼來計(jì)算和存儲(chǔ)數(shù)據(jù)

2、原碼

定義

十進(jìn)制數(shù)據(jù)的二進(jìn)制表現(xiàn)形式就是原碼,原碼最左邊的一個(gè)數(shù)字就是符號(hào)位,0為正,1為負(fù)。

例如:56 -> 0 0 1 1 1 0 0 0

左邊第一位為符號(hào)位,其他位為數(shù)據(jù)位。

一個(gè) byte 有 8bit,最大值是 0 1 1 1 1 1 1 1 (+127),最小值是 1 1 1 1 1 1 1 1 (-128)

在計(jì)算機(jī)中之所以使用二進(jìn)制來表示原碼是因?yàn)檫壿嫼?jiǎn)單,對(duì)于電路來說只有開或者關(guān)兩種狀態(tài),用二進(jìn)制是在方便不過的了。如果使用的進(jìn)制是十進(jìn)制、八進(jìn)制或者十六進(jìn)制的話,電路沒有辦法表示那么多的狀態(tài)

  • 正數(shù)計(jì)算

使用原碼對(duì)正數(shù)進(jìn)行計(jì)算不會(huì)有任何問題的

例如:5 + 2

 0 0 0 0 0 1 0 1
+        0 0 1 0
-----------------
 0 0 0 0 0 1 1 1

把這個(gè)結(jié)果轉(zhuǎn)成十進(jìn)制剛好就等于 7,完全正確無誤

  • 負(fù)數(shù)計(jì)算

但是如果是負(fù)數(shù)的話,那計(jì)算的結(jié)果就會(huì)大相徑庭了

我們拿 -56 這個(gè)數(shù)字來舉例,它的原碼是 1 0 1 1 1 0 0 0 ,減一之后,就會(huì)變成 1 0 1 1 0 1 1 1 ,這個(gè)數(shù)轉(zhuǎn)成十進(jìn)制就是 -55。計(jì)算前是 -56,減一之后正確的結(jié)果應(yīng)該是 -57(1 0 1 1 1 0 0 1)才對(duì),居然還越減越大了

 1 0 1 1 1 0 0 0
-              1
-----------------
 1 0 1 1 0 1 1 1

什么是原碼、反碼和補(bǔ)碼

為了解決原碼不能用于計(jì)算負(fù)數(shù)的這種問題,這時(shí)候,反碼它出現(xiàn)了,作為負(fù)數(shù)的“計(jì)算的救星”。

計(jì)算規(guī)則是正數(shù)的反碼不變和原碼一致,負(fù)數(shù)的反碼會(huì)在原碼的基礎(chǔ)上,高位的符號(hào)位不變,其他位取反( 1 變成 0 , 0 變?yōu)?1 )。

3、反碼

定義

正數(shù)的反碼是其本身(等于原碼),負(fù)數(shù)的反碼是符號(hào)位保持不變,其余位取反。 反碼的存在是為了正確計(jì)算負(fù)數(shù),因?yàn)樵a不能用于計(jì)算負(fù)數(shù)

十進(jìn)制數(shù)字 原碼 反碼
+0 0000 0000 0000 0000
-0 1000 0000 1111 1111
-1 1000 0001 1111 1110
-2 1000 0010 1111 1101
-3 1000 0011 1111 1100
-4 1000 0100 1111 1011
-5 1000 0101 1111 1010
-6 1000 0110 1111 1001
-7 1000 0111 1111 1000
  • 負(fù)數(shù)計(jì)算

這時(shí)候,我們?cè)賮硎褂梅创a計(jì)算一下 -56 - 1 的結(jié)果

-56 的原碼是 1 0 1 1 1 0 0 0 ,如果轉(zhuǎn)成反碼(符號(hào)位不變,其他位取反),

那么它的反碼就是 1 1 0 0 0 1 1 1

  1 1 0 0 0 1 1 1
 -              1
-----------------
  1 1 0 0 0 1 1 0

什么是原碼、反碼和補(bǔ)碼

-56 -1 = -57,-57 的原碼是 1 0 1 1 1 0 0 1,轉(zhuǎn)成反碼剛好是 1 1 0 0 0 1 1 0,剛好等于剛才我們算出的值

  • 跨零計(jì)算

不過反碼也有它的 “ 軟肋 ”,如果是負(fù)數(shù)跨零進(jìn)行計(jì)算的話,計(jì)算得出的結(jié)果不對(duì)

我們拿 -3 + 5 來舉例

-3 的原碼是 1 0 0 0 0 0 1 1,轉(zhuǎn)成反碼的話就是 1 1 1 1 1 1 0 0

 1 1 1 1 1 1 0 0
+        0 1 0 1  
-----------------
 0 0 0 0 0 0 0 1 

什么是原碼、反碼和補(bǔ)碼

把計(jì)算結(jié)果轉(zhuǎn)成十進(jìn)制就是 1,這結(jié)果顯然不對(duì)。那么我們?cè)撛趺从?jì)算呢,這時(shí)候,作為反碼的補(bǔ)充編碼 —— 補(bǔ)碼就出現(xiàn)了。

4、補(bǔ)碼

定義

正數(shù)的補(bǔ)碼是其本身,負(fù)數(shù)的補(bǔ)碼等于其反碼 +1。因?yàn)榉创a不能解決負(fù)數(shù)跨零(類似于 -6 + 7)的問題,所以補(bǔ)碼出現(xiàn)了。

十進(jìn)制數(shù)字 原碼 反碼 補(bǔ)碼
+0 0000 0000 0000 0000 0000 0000
-0 1000 0000 1111 1111 0000 0000
-1 1000 0001 1111 1110 1111 1111
-2 1000 0010 1111 1101 1111 1110
-3 1000 0011 1111 1100 1111 1101
-4 1000 0100 1111 1011 1111 1100
-5 1000 0101 1111 1010 1111 1011
-6 1000 0110 1111 1001 1111 1010
-7 1000 0111 1111 1000 1111 1001
-127 1111 1111 1000 0000 1000 0001
-128 1000 0000
  • 跨零計(jì)算

這時(shí)候,我們?cè)賮硎褂梅创a計(jì)算一下 -3 + 5 的結(jié)果

-3 的原碼是 1 0 0 0 0 0 1 1,轉(zhuǎn)成反碼的話就是 1 1 1 1 1 1 0 0,再轉(zhuǎn)成補(bǔ)碼就是 1 1 1 1 1 1 0 1

 1 1 1 1 1 1 0 1
+        0 1 0 1
----------------- 
 0 0 0 0 0 0 1 0

把這個(gè)數(shù)轉(zhuǎn)成十進(jìn)制剛好等于2,結(jié)果正確

5、總結(jié)

在計(jì)算機(jī)當(dāng)中都是使用補(bǔ)碼來進(jìn)行計(jì)算和存儲(chǔ)的。補(bǔ)碼很好的解決了反碼負(fù)數(shù)不能跨零計(jì)算的弊端,并且補(bǔ)碼還可以記錄一個(gè)特殊的值 -128,這個(gè)數(shù)據(jù)在 1 個(gè)字節(jié)下是沒有原碼和反碼

學(xué)習(xí)了原碼、反碼和補(bǔ)碼的知識(shí)之后,我們就可以了解到,Java 當(dāng)中所有的基本數(shù)據(jù)類型。比如整數(shù)類型的數(shù)據(jù)類型,存儲(chǔ)的數(shù)都是同樣的,區(qū)別是在于什么地方,假設(shè)存儲(chǔ)的值都是 10

基本數(shù)據(jù)類型 字節(jié)數(shù) 內(nèi)存中實(shí)際存儲(chǔ)的值
byte 10 1 0000 1010
short 10 2 0000 0000 0000 1010
int 10 4 0000 0000 0000 0000 0000 0000 0000 1010
long 10 8 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 1010

從上表中我們可以得出一個(gè)結(jié)論,為了湊齊字節(jié)數(shù),所占的字節(jié)越大,則前面補(bǔ)的零越多。

類型轉(zhuǎn)換原理

  • 隱式類型轉(zhuǎn)換
public class Test {
	public static void main(String[] args) {
    	// 小的數(shù)據(jù)類型往大的數(shù)據(jù)類型進(jìn)行轉(zhuǎn)換底層就是通過左補(bǔ)零完成的
        byte a = 10; // 0000 1010
        int b = a;	 // 0000 0000 0000 0000 0000 0000 0000 1010
        System.out.println(b);
    }
}
  • 強(qiáng)制類型轉(zhuǎn)換
public class Test {
	public static void main(String[] args) {
    	int a = 300;	   		// 0000 0000 0000 0000 0000 0001 0010 1100
        byte b = (byte) a; 		// 0010 1100
        System.out.println(b);	// 打印出44
        /*
        	int a = 200;	  		// 0000 0000 0000 0000 0000 0000 1100 1000
        	byte b = (byte)a; 		// 1100 1000
        	System.out.println(b);	// 打印出-56
        */
    }
}

補(bǔ)碼的運(yùn)算也適用于邏輯運(yùn)算符文章來源地址http://www.zghlxwxcb.cn/news/detail-407724.html

運(yùn)算符 含義 運(yùn)算規(guī)則
& 邏輯與 0為false,1為true,當(dāng)都為1時(shí)才為true
| 邏輯或 0為false,1為true,當(dāng)有至少一個(gè)為1時(shí)為true,如果都沒有則為false
<< 左移 向左移動(dòng),低位補(bǔ)零
>> 右移 向右移動(dòng),高位補(bǔ)零,符號(hào)位按照原來數(shù)字的符號(hào)位不變
>>> 無符號(hào)右移 向右移動(dòng),高位補(bǔ)零

到了這里,關(guān)于什么是原碼、反碼和補(bǔ)碼的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • List 3.5 詳解原碼、反碼、補(bǔ)碼

    List 3.5 詳解原碼、反碼、補(bǔ)碼

    本博客文章已收錄至我的Java SE專欄,如需閱讀其他有關(guān)博客筆記請(qǐng)轉(zhuǎn)至該專欄下 傳送門 --Java SE_程序員雨空集 目錄 ?前言 原碼 原碼的示例 原碼的弊端 反碼 反碼的示例 反碼的弊端 補(bǔ)碼 補(bǔ)碼的示例 補(bǔ)碼的小細(xì)節(jié) 總結(jié) 原碼:十進(jìn)制數(shù)據(jù)的二進(jìn)制表現(xiàn)形式,最左邊是符號(hào)位,

    2024年02月08日
    瀏覽(50)
  • C++知識(shí)精講13 | 原碼、反碼和補(bǔ)碼

    ------------------------------------------------------------------------------------------------------------------------- 觀看視頻ing......? 12歲的少年編程者告訴你編程如此簡(jiǎn)單 ?------------------------------------------------------------------------------------------------------------------------- ---------------------------------------

    2024年02月16日
    瀏覽(16)
  • 【007】C++數(shù)據(jù)類型之原碼、補(bǔ)碼、反碼

    【007】C++數(shù)據(jù)類型之原碼、補(bǔ)碼、反碼

    ?? 作者簡(jiǎn)介:專注于C/C++高性能程序設(shè)計(jì)和開發(fā),理論與代碼實(shí)踐結(jié)合,讓世界沒有難學(xué)的技術(shù)。包括C/C++、Linux、MySQL、Redis、TCP/IP、協(xié)程、網(wǎng)絡(luò)編程等。 ?? ??? CSDN實(shí)力新星,社區(qū)專家博主 ?? ?? 專欄介紹:從零到c++精通的學(xué)習(xí)之路。內(nèi)容包括C++基礎(chǔ)編程、中級(jí)編程、

    2024年02月05日
    瀏覽(32)
  • Java基礎(chǔ):進(jìn)制之間的轉(zhuǎn)換,8421碼,原碼,反碼,補(bǔ)碼

    1平時(shí)的數(shù)一般都是用十進(jìn)制表示的 十進(jìn)制: 12345=10000+2000+300+40+5 =1*10^4+2*10^3+3*10^2+4*10^1+5*10^0 =1*10000+2*1000+3*100+4*10+5*1 =10000+2000+300+40+5 =12345 十進(jìn)制轉(zhuǎn)換為其他進(jìn)制: 整數(shù)除以要轉(zhuǎn)換目標(biāo)進(jìn)制的基數(shù),一直除完為止,再將它們的余數(shù)由下對(duì)上排列。 二進(jìn)制由0,1組成,0b開頭 八進(jìn)

    2023年04月08日
    瀏覽(66)
  • verilog學(xué)習(xí)筆記5——進(jìn)制和碼制、原碼/反碼/補(bǔ)碼

    verilog學(xué)習(xí)筆記5——進(jìn)制和碼制、原碼/反碼/補(bǔ)碼

    2023.8.13 天氣晴 整數(shù):除以2,余數(shù)倒著寫 小數(shù):乘以2,正著寫 例題1 : 例題2 : 十進(jìn)制數(shù)13.613轉(zhuǎn)化為二進(jìn)制數(shù),要求誤差小于1% 乘以2的次方 乘法 :被乘數(shù)左移,后相加 除法 :除數(shù)右移,被除數(shù)/余數(shù)去減去除數(shù) 8位二進(jìn)制數(shù)的范圍: 有符號(hào)數(shù) 無符號(hào)數(shù) -128~127 0~255 原碼 反

    2024年02月13日
    瀏覽(20)
  • 位運(yùn)算(按位與、按位或、異或、取反)以及原碼、反碼、補(bǔ)碼

    位運(yùn)算(按位與、按位或、異或、取反)以及原碼、反碼、補(bǔ)碼

    目錄 位運(yùn)算 按位與運(yùn)算符 [ ] 按位或運(yùn)算符 [ | ] 異或運(yùn)算符 [ ^ ] 取反運(yùn)算符 [ ~ ] 移位操作 一些面試常考的位操作運(yùn)算 獲取二進(jìn)制中最右邊的1 計(jì)算機(jī)原碼、反碼、補(bǔ)碼 機(jī)器數(shù) “三碼”之間的轉(zhuǎn)換 計(jì)算機(jī)中為啥要用補(bǔ)碼呢? 真數(shù) 原碼 反碼 補(bǔ)碼 有了原碼為什么要使用反碼

    2024年02月02日
    瀏覽(17)
  • 【C語言】中的位操作符和移位操作符,原碼反碼補(bǔ)碼以及進(jìn)制之間的轉(zhuǎn)換

    【C語言】中的位操作符和移位操作符,原碼反碼補(bǔ)碼以及進(jìn)制之間的轉(zhuǎn)換

    歡迎大家來到c語言知識(shí)小課堂,今天的知識(shí)點(diǎn)是操作符和進(jìn)制 同樣都是數(shù)字1111,不同進(jìn)制下數(shù)字的大小不同,第二行代表的是其各位數(shù)字十進(jìn)制下的大小,將各位數(shù)字的十進(jìn)制大小相加即1111在這個(gè)進(jìn)制下轉(zhuǎn)化為十進(jìn)制的大小,從圖中我們可以看出來 進(jìn)制的定義:從右往左

    2024年02月22日
    瀏覽(24)
  • 愛上C語言:整型和浮點(diǎn)型在內(nèi)存中的存儲(chǔ)(進(jìn)制轉(zhuǎn)換,原碼,反碼,補(bǔ)碼以及大小端)

    愛上C語言:整型和浮點(diǎn)型在內(nèi)存中的存儲(chǔ)(進(jìn)制轉(zhuǎn)換,原碼,反碼,補(bǔ)碼以及大小端)

    ?? 作者:阿輝不一般 ?? 你說呢: 生活本來沉悶,但跑起來就有風(fēng) ?? 專欄:愛上C語言 ?? 作圖工具:draw.io ( 免費(fèi)開源的作圖網(wǎng)站) 如果覺得文章對(duì)你有幫助的話,還請(qǐng)點(diǎn)贊,關(guān)注,收藏支持博主,如有不足還請(qǐng)指點(diǎn),博主及時(shí)改正,感謝大家支持?。?! 大家好啊??!今

    2024年02月05日
    瀏覽(24)
  • 關(guān)于二進(jìn)制的原碼、補(bǔ)碼和反碼,以及表示范圍、常見位運(yùn)算符和進(jìn)制轉(zhuǎn)換的理解與簡(jiǎn)述

    關(guān)于二進(jìn)制的原碼、補(bǔ)碼和反碼,以及表示范圍、常見位運(yùn)算符和進(jìn)制轉(zhuǎn)換的理解與簡(jiǎn)述

    【版權(quán)聲明】未經(jīng)博主同意,謝絕轉(zhuǎn)載?。ㄕ?qǐng)尊重原創(chuàng),博主保留追究權(quán)) https://www.cnblogs.com/cnb-yuchen/p/17963363 出自【進(jìn)步*于辰的博客】 參考筆記一,P3.13、P5.1;筆記三,P43.1/3、P44.1。 注:我暫且沒有整理關(guān)于二進(jìn)制、原碼、補(bǔ)碼和反碼等概念的理論,本文中的闡述都基于

    2024年02月02日
    瀏覽(25)
  • 【C語言趣味教程】(2) 整數(shù)類型 | 數(shù)據(jù)類型的概念 | 原碼反碼與補(bǔ)碼 | 有符號(hào)型和無符類型 | 研究 signed char 與 unsigned char 的取值范圍

    【C語言趣味教程】(2) 整數(shù)類型 | 數(shù)據(jù)類型的概念 | 原碼反碼與補(bǔ)碼 | 有符號(hào)型和無符類型 | 研究 signed char 與 unsigned char 的取值范圍

    ? ???《C語言趣味教程》??? 猛戳訂閱?。?! 在講解數(shù)據(jù)類型前,我們不得不先講解一些必備的知識(shí)點(diǎn),比如如何定義一個(gè)變量,數(shù)據(jù)類型的基本概念。并介紹 ASCII 碼,為 char 類型的講解做必要的鋪墊。然后講解原碼反碼和補(bǔ)碼,講解 IEEE754標(biāo)準(zhǔn)時(shí)需要這部分的知識(shí)作為基

    2024年02月15日
    瀏覽(24)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包