※ 引述《yantchen (球童 / 資一甲12歲小蘿莉)》之銘言:
: 正確顯示位數 ( 由高位輸出至個位 )
: 負數會數 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");
: }
解釋一下三元運算子 (a)?b:c
a是運算式
b是a=1或非0(true)的時候回傳
c是a=0(false)的時候回傳
依照上面的解釋
程式裡面用到 a[j]=(i%2)?0:1; 等於是下面這行的縮寫
if(i%2==1) a[j]=0; else a[j]=1;
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 210.240.186.34