十進(jìn)制負(fù)數(shù)的二進(jìn)制表示法

十進(jìn)制轉(zhuǎn)正整數(shù)轉(zhuǎn)二進(jìn)制應(yīng)該都會(huì),用C語言代碼簡單表示算法:

#include<stdio.h>
int main()
{
    int dec=65535; /*positive decimalism number to binary number*/
    int bin[32];
    int i=0, j;
    while (dec>1)
    {
        bin[i]=dec%2;
        dec/=2;
        i++;
    }
    bin[i]=dec;
    for (j=i; j>=0; j--) /*print binary number*/
    {
        printf("%d",bin[j]); 
    }
    printf("\n");
}

當(dāng)然也有另外一種簡單轉(zhuǎn)換方法:

#include<stdio.h>
int main()
{
    int dec=65535;
    char bin[32];
    itoa(dec,bin,2); /*整型轉(zhuǎn)換為字符串的函數(shù),第一個(gè)參數(shù)是整型變量,
    第二個(gè)是字符數(shù)組,用于存放字符串,第三個(gè)是進(jìn)制,“2” 表示輸出的字符串的進(jìn)制格式,
    可以這樣記函數(shù):“int to arr” */
    printf("%s\n", bin);
}

但是,十進(jìn)制負(fù)整數(shù)轉(zhuǎn)換為二進(jìn)制稍微復(fù)雜一些,分為三步:

一、原碼

例如一個(gè)十進(jìn)制數(shù) 5,二進(jìn)制原碼表示為:

00000000 00000000 00000000 00000101

大小為 4 字節(jié),每一個(gè) 01 表示一個(gè)比特位(bit),所以八位為一字節(jié),好像32位和64位系統(tǒng)都這樣。一字節(jié)用十進(jìn)制整數(shù)表示大小則是:2的8次方(256)。
表示為十六進(jìn)制是這樣:ff ff ff ff(f=2^4-1)

二、反碼

將二進(jìn)制原碼每一位取反,就是 0110。
上面 5 的反碼表示為這樣:

11111111 11111111 11111111 11111010

三、補(bǔ)碼

將反碼最低位加 1 叫做補(bǔ)碼,那么 5 的補(bǔ)碼表示為:

11111111 11111111 11111111 11111011

注意反碼末位是 1 時(shí)記得進(jìn)位。

所以十進(jìn)制數(shù) -5 的二進(jìn)制表示為:

11111111 11111111 11111111 11111011

所以 -1 在計(jì)算機(jī)中表示為全 1,就是:

11111111 11111111 11111111 11111111

我64位計(jì)算機(jī)中是這樣的:

20180404111248861.jpg
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容