雷火电竞-中国电竞赛事及体育赛事平台

歡迎來到入門教程網(wǎng)!

C語言

當(dāng)前位置:主頁 > 軟件編程 > C語言 >

詳解原碼、反碼與補(bǔ)碼存儲與大小

來源:本站原創(chuàng)|時間:2020-01-10|欄目:C語言|點(diǎn)擊:

詳解原碼、反碼與補(bǔ)碼存儲與大小

原碼:

如果機(jī)器字長為N個bit,那么一個數(shù)的原碼就是N位二進(jìn)制數(shù),最高位
是符號位,1代表負(fù)數(shù),0代表正數(shù)。

反碼:

正數(shù)的反碼就是原碼,負(fù)數(shù)的反碼就是符號位不變,其他取反。

補(bǔ)碼:

正數(shù)的補(bǔ)碼與其原碼相同;負(fù)數(shù)的補(bǔ)碼是在其反碼的末位加1。
(計算機(jī)中的數(shù)都是以補(bǔ)碼形式存儲的)
補(bǔ)碼的形式是為了進(jìn)行正負(fù)數(shù)二進(jìn)制的加減操作

char為1個字節(jié),8個bit位,看看內(nèi)存中是怎么存儲的

    十六進(jìn)制 二進(jìn)制(補(bǔ)碼)  反碼     原碼  實際值 
char a = 127;   //7f  0111 1111                 127 
char b = 128;  //80   1000 0000  0111 1111   1000 0000  -128 
char c = -128;  //80   1000 0000   0111 1111  1000 0000  -128 
char d = -1;   //ff   1111 1111   1111 1110  1000 0001   -1

-128可能大家會有疑問,1000 0000是負(fù)數(shù),按補(bǔ)碼反碼原碼的方式往回推減一為0111 1111,取反1000 0000為128,因為是負(fù)數(shù)所以就是-128.

所以signed char的最大值為127,最小值為-128.

unsigned是無符號的意思,就是沒有符號位。

 unsigned char e = 256;  //00   0000 0000    0
   unsigned char f = -1;   //ff    1111 1111   255
   unsigned char g = 255;  //ff  1111 1111    255

 因為沒有符號位,所以原反補(bǔ)碼都一樣,為什么-1的值為255呢,-1的原碼是0000 0001(沒符號位),反碼1111 1110,補(bǔ)碼

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

上一篇:Opencv學(xué)習(xí)教程之漫水填充算法實例詳解

欄    目:C語言

下一篇:利用C語言編輯畫圖程序的實現(xiàn)方法(推薦)

本文標(biāo)題:詳解原碼、反碼與補(bǔ)碼存儲與大小

本文地址:http://www.jygsgssxh.com/a1/Cyuyan/1436.html

網(wǎng)頁制作CMS教程網(wǎng)絡(luò)編程軟件編程腳本語言數(shù)據(jù)庫服務(wù)器

如果侵犯了您的權(quán)利,請與我們聯(lián)系,我們將在24小時內(nèi)進(jìn)行處理、任何非本站因素導(dǎo)致的法律后果,本站均不負(fù)任何責(zé)任。

聯(lián)系QQ:835971066 | 郵箱:835971066#qq.com(#換成@)

Copyright © 2002-2020 腳本教程網(wǎng) 版權(quán)所有