• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
美丽的时光机器
博客园    首页    新随笔    联系   管理    订阅  订阅
二进制和十进制的相互转换

整数转换为二进制输出
#include <stdio.h>
#include <string.h>

int main(int argc, char *argv[])
{
   char bin[8 * sizeof(int)];
   int n = 0;
   int index;

   scanf("%d", &n);
 
  for(index = (8 * sizeof(int) - 1); index >= 0; index--)
   {
     bin[index] = (n & 1) + '0';
     n >>= 1;
 
   }
   bin[8 * sizeof(int)] = '\0';
   int i = 0;
   for(index = 0; index <= (8 * sizeof(int) - 1); index++)
   {
     // int i;
     ++i;
     putchar(bin[index]);
     if(i % 4 == 0)
    {
       putchar(' ');
     }
   }
   putchar('\n');
 
   return 0;
 }

二进制数,转换为对应的十进制

#include <stdio.h>
#include <string.h>

int integer(const char *str);

int main(int argc, char *argv[])
{
  char *pbin = "01001001";
  int inter = 0;

  inter = integer(pbin);

  return 0;
}

 int integer(const char *str)
 {
  int i, j, index;
  int count = 0;
  int in[strlen(str)];//定义一个数组来存储二进制每个位对应的数字

  for(i = 0; i < (strlen(str)); i++)//strlen(str),计算字符个数,结果为8而不是9
   {
    int sum = 1;//每一次循环都要将sum的值重新设置为1
    for(j = (strlen(str) - 1 - i); j > 0; j--)//j为对应的位所要计算的阶乘,从右往左数
     {
      sum *= ((str[i] - '0') * 2);//str[i] - '0',表示将字符转换为数字,str[i] + '0',表示将数字转化为字符
     }

    count += sum;//count保存每次小循环得到的sum值
   }
   printf("%d\n", count);
   return count;
}

点滴珍贵,重在积累,愿时光慢一点,再慢一点。
posted on 2018-01-21 20:50  美丽的时光机器  阅读(389)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3