让写反的字符(0或1),反过来排列就和10进制数对上了.
本帖最后由 howzyao 于 2022-10-23 11:13 编辑如下代码:
大家看看,有没有好的办法,让写反的字符(0或1),反过来排列就和10进制数对上了.
int num=16; //实承上都写反了 怎么办
char cnum={'0'};
int i=0;
while(num)
{
cnum = '0'+ num%2;//模==1或0,都和字符'0'相加,只能得到0或1
num /= 2;//上行把一个bit设定好后,/2正好去到下一个bit
i++;
}
printf("%s",cnum); 没什么好办法,把 cnum 的全部元素首尾两两交换
int num=16; //实承上都写反了 怎么办
char cnum={'0'};
int i=0;
while(num)
{
cnum = '0'+ num%2;//模==1或0,都和字符'0'相加,只能得到0或1
num /= 2;//上行把一个bit设定好后,/2正好去到下一个bit
i++;
}
for(int t , k = 0 ; k < i / 2 ; k ++) {
t = cnum ;
cnum = cnum ;
cnum = t ;
}
printf("%s",cnum);
jackz007 发表于 2022-10-23 11:36
没什么好办法,把 cnum 的全部元素首尾两两交换
谢谢回复先.
我竟如此愚钝啊,百思之下,就列表,结果看出了:
int num=15;
char cnum;
for(int i=0;i<8;i++)
cnum='0';
int i=7;
while(num)
{
cnum = '0'+ num%2;
num /= 2;
i--;
}
for(int i=0;i<8;i++)
printf("%c",cnum); jackz007 发表于 2022-10-23 11:36
没什么好办法,把 cnum 的全部元素首尾两两交换
i / 2
i此时是个7,第1次进去for,这个用意是为何呢?谢谢 jackz007 发表于 2022-10-23 11:36
没什么好办法,把 cnum 的全部元素首尾两两交换
哦,不对,我改了代码,以为i==7,实际上,num长度决定i是几.你的算法太牛了.谢谢
页:
[1]