#15559: 提供另一種想法--位元推移


giant0620 (BlenderWang)

學校 : 國立彰化師範大學
編號 : 61100
來源 : [140.113.207.98]
最後登入時間 :
2022-07-25 14:26:46
a034. 二進位制轉換 | From: [118.163.203.107] | 發表日期 : 2018-10-13 23:55

核心寫法如下:

unsigned int b;

for(b = 2147483648;b;b>>=1)

{

if(b&a)

{

for(;b;b>>=1)

printf(b&a?"1":"0");

break;

}

else

{

printf("0");

break;

}

}

基本上是把存在記憶體的二進位數直接呈現出來

所以不適合用來轉換負數

 
#15560: Re:提供另一種想法--位元推移


giant0620 (BlenderWang)

學校 : 國立彰化師範大學
編號 : 61100
來源 : [140.113.207.98]
最後登入時間 :
2022-07-25 14:26:46
a034. 二進位制轉換 | From: [118.163.203.107] | 發表日期 : 2018-10-14 00:07

核心寫法如下:

unsigned int b;

for(b = 2147483648;b;b>>=1)

{

if(b&a)

{

for(;b;b>>=1)

printf(b&a?"1":"0");

break;

}

else

{

printf("0");

break;

}

}

基本上是把存在記憶體的二進位數直接呈現出來

所以不適合用來轉換負數

抱歉修改一下:

unsigned int b;

for(b = 2147483648;b;b>>=1)

{

if(b&a)

{

for(;b;b>>=1)

printf(b&a?"1":"0");

break;

}

if(a==0)

{

printf("0");

break;

}

}

條件式打錯了

 
ZeroJudge Forum