一个二进制的算法

loong0306 2014-04-23 09:31:03
最近学习了一个二进制的编写,发下看看。。没啥问题,外加散个分
#include<iostream.h>
void fun(int x)
{
int k=0,r,b[10];
do{
r=x%2;
b[k++]=r;
x/=2;
}

while(x);
for(int i=0;i<k;i++)
cout<<b[i]<<endl;
}

int main()
{
int x;
cout<<"please input num:"
cin>>x;
fun(x);
return 0;
}
...全文
191 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2014-04-24
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <locale.h>
int main() {
    int i,v;
    char bs[33];
    char b[33];
    char hs[9];
    char h[9];
    char s[4];
    char *e;

// 十进制整数转二进制串;
    i=1024;
    ltoa(i,b,2);
    sprintf(bs,"%032s",b);
    printf("i=%d,bs=%s\n",i,bs);
// 十进制整数转十六进制串;
    i=1024;
    ltoa(i,h,16);
    sprintf(hs,"%08s",h);
    printf("i=%d,hs=%s\n",i,hs);
// 十六进制字符串转成十进制数
    strcpy(hs,"00000400");
    sscanf(hs,"%x",&i);
    printf("hs=%s,i=%d\n",hs,i);
// 二进制字符串转化为十六进制字符串;
    strcpy(bs,"00000000000000000000010000000000");
    i=strtol(bs,&e,2);
    ltoa(i,h,16);
    sprintf(hs,"%08s",h);
    printf("bs=%s,hs=%s\n",bs,hs);
// 二进制字符串转化为十进制数;
    strcpy(bs,"00000000000000000000010000000000");
    i=strtol(bs,&e,2);
    printf("bs=%s,i=%d\n",bs,i);
// 十六进制字符串转成二进制串
    strcpy(hs,"00000400");
    sscanf(hs,"%x",&i);
    ltoa(i,b,2);
    sprintf(bs,"%032s",b);
    printf("hs=%s,bs=%s\n",hs,bs);
// ASC\GBK字符串转十六进制串
    strcpy(s,"a汉");
    i=0;
    while (1) {
        if (0==s[i]) break;
        sprintf(hs+i*2,"%02X",(unsigned char)s[i]);
        i++;
    }
    setlocale(LC_ALL,"chs");
    printf("s=%s,hs=%s\n",s,hs);
// 十六进制字符串转成汉字(GBK)及字符(ASC)
    strcpy(hs,"61BABA");
    i=0;
    while (1) {
        if (1!=sscanf(hs+i*2,"%2x",&v)) break;
        s[i]=(char)v;
        i++;
    }
    s[i]=0;
    printf("hs=%s,s=%s\n",hs,s);

    return 0;

}
//i=1024,bs=00000000000000000000010000000000
//i=1024,hs=00000400
//hs=00000400,i=1024
//bs=00000000000000000000010000000000,hs=00000400
//bs=00000000000000000000010000000000,i=1024
//hs=00000400,bs=00000000000000000000010000000000
//s=a汉,hs=61BABA
//hs=61BABA,s=a汉
caewow 2014-04-23
  • 打赏
  • 举报
回复
middzwb 2014-04-23
  • 打赏
  • 举报
回复
void fun_binary(int a)
{
	if(a / 2 != 0)
	{
		fun_binary(a / 2);
	}
	cout << a % 2;
}
笑梦码侬生 2014-04-23
  • 打赏
  • 举报
回复
还有如果输入是负数,怎么办。
loong0306 2014-04-23
  • 打赏
  • 举报
回复
引用 1 楼 u014356552 的回复:
二进制可以用递归写啊 b[10]超过10不就越界了吗
恩恩。。忘记啦。。嘿嘿~
wxyb 2014-04-23
  • 打赏
  • 举报
回复
接分吧!顺便学习了!话说分数有神马用?
Inhibitory 2014-04-23
  • 打赏
  • 举报
回复
除基取模倒序法:

    for(int i=k-1;i>=0;i++)
        cout<<b[i]<<endl;
middzwb 2014-04-23
  • 打赏
  • 举报
回复
二进制可以用递归写啊 b[10]超过10不就越界了吗

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧