正確顯示位數 ( 由高位輸出至個位 )
負數會數 2 補數
此版本會使用老師所說以後會交到的陣列,程式較為複雜,僅供參考
#include<iostream>
using namespace std;
int main(){
int i=0,j,a[99];
cout<<"請輸入一個10進位整數\n";
cin>>i;
if(i==0){ // 等於零 或 非整數 當作 0
j=1;
a[0]=0;
}else if(i>0){ // 正整數
j=0;
for(i;i>0;i/=2){
a[j]=i%2;
j++;
}
}else{ // 負整數
j=0;
for(i=-i;i>0;i/=2){
a[j]=(i%2)?0:1; // 取 1 補數
j++;
}
a[0]+=1;
for(i=0;i<j;i++){ // 取 2 補數
if(a[i]>1){
a[i]-=2;
a[i+1]+=1;
}
}
cout<<"( 負數的二進位第一位為正負符號 )\n1";
}
for(i=j-1;i>=0;i--) cout<<a[i]; // 由高位輸出至個位
cout<<endl;
system("pause");
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 210.240.186.34