進製轉換 35 輸出二進位制補碼

2021-08-20 02:49:59 字數 1098 閱讀 9731

總時間限制: 

1000ms

記憶體限制: 

65536kb

描述輸入乙個整型(int)的整數,輸出它的32位二進位制補碼。

輸入乙個整型整數。

輸出輸出一行,即該整數的補碼表示。

樣例輸入

7

樣例輸出

00000000000000000000000000000111

首先明確幾個概念:

原碼:如果機器字長為n,那麼乙個數的原碼就是用乙個n位的二進位制數,其中最高位為符號位:正數為0,負數為1。剩下的n-1位表示概數的絕對值。

例如: x=+101011 , [x]原= 00101011   

x=-101011 , [x]原= 10101011 

位數不夠的用0補全。

ps:正數的原、反、補碼都一樣:0的原碼跟反碼都有兩個,因為這裡0被分為+0和-0。

反碼:知道了什麼是原碼,那反碼就更是張飛吃豆芽——小菜一碟了。知道了原碼,那麼你只需要具備區分0跟1的能力就可以輕鬆求出反碼,為什麼呢?因為反碼就是在原碼的基礎上,符號位不變其他位按位取反(就是0變1,1變0)就可以了。

例如:x=-101011 , [x]原= 10101011 ,[x]反=11010100

補碼:補碼也非常的簡單就是在反碼的基礎上按照正常的加法運算加1。

例如:x=-101011 , [x]原= 10101011 ,[x]反=11010100,[x]補=11010101

ps:0的補碼是唯一的,如果機器字長為8那麼[0]補=00000000。

然後,我們分類討論輸入的數,分三類:0,正數、負數。

負數的時候注意一下規範寫法,不然容易個別樣例過不了。

#include#include#includeusing namespace std;

int ans[32];

int two[32];

int main()

}else if(a>0)while(a!=0);

for(int i=0;i0;i--)else

} for(int i=0;i<32;i++)

}}

輸出二進位制補碼

描述 輸入乙個整型 int 的整數,輸出它的32位二進位制補碼。輸入乙個整型整數。輸出輸出一行,即該整數的補碼表示。樣例輸入 7樣例輸出 00000000000000000000000000000111 第一位為符號位,0表示正數,1表示負數 正數的原碼,反碼,補碼相同 負數的反碼為各位取反,補碼為...

輸出二進位制補碼問題

蒜頭君有乙個 int textint 的整數,輸出它的 323232 位二進位制補碼。輸入格式 乙個整型整數。輸出格式 輸出一行,即該整數的補碼表示。輸出時每行末尾的多餘空格,不影響答案正確性 樣例輸入 樣例輸出 做這道題就是明白一點 計算機中負數用補碼來表示,因為整數補碼是本身,所以這道題其實就是...

二進位制補碼

二進位制補碼 計算機儲存資料都是以0,1二進位制進行儲存。對於有符號整數儲存 對於浮點數待續 引入補碼概念。原碼即直接將真值轉換為其相應的二進位制形式,而反碼和補碼是對原碼進行某種轉換編碼方式。對於正整數,原碼,反碼和補碼都相一樣 對於負整數,補碼等於反碼加1,而反碼等於原碼除符號位不變其他位按位求...