将十进制整形数转换成二进制,然后通过字符型输出 自己实现的一个简单的例子

声明:此文档只做学习交流使用,请勿用作其他商业用途

作者:朝阳_tony

邮箱:linzhaolover@gmail.com

2013年1月13日20:05:29 星期日

转载请注明出处:http://blog.csdn.net/linzhaolove


用C语言将十进制整形数转换成二进制,然后通过字符型输出 ,  


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


#define BUF_SIZE (100U)

int i_to_b(int a, char *str)
{
  int i=0,j=0;
  char tmp[BUF_SIZE];

  if(a==0){
    str[0]='0';
    return 0;
  }
  while(a!=0){
    tmp[i]= (a & 0x1) + '0' ;
    i++;
    a = a >> 1;
  }
  for(j=0;j<i;j++){
    str[j]=tmp[i-j-1];
  }
  return 0;
}

int main(int argc,  char ** argv)
{
  int a=110;
  char str[BUF_SIZE]={0};

  i_to_b(a,str);
  fprintf(stdout,"%s\n",str);

  return 0;
}        


### 回答1: 可以使用以下步骤将十进制转换成二进制,并按位存放到组中: 1. 将十进制不断除以2,直到商为为止,每次记录余。 2. 将记录的余倒序排列,得到二进制。 3. 将二进制按位存放到组中。 以下是示例代码: ```python # 输入十进制 num = int(input("请输入一个十进制:")) # 将十进制转换成二进制,并按位存放到组中 binary = [] while num > : remainder = num % 2 binary.append(remainder) num //= 2 # 倒序输出二进制 print("转换后的二进制为:", end="") for i in range(len(binary)-1, -1, -1): print(binary[i], end="") ``` 例如,输入十进制10,输出结果为: ``` 请输入一个十进制:10 转换后的二进制为:101 ``` ### 回答2: 将十进制转换成二进制是计算机科学中的基础操作之一。在计算机内部,字通常都是以二进制形式存储和处理的。因此,将一个十进制转换成二进制,就是将这个的每一位都转换成二进制,并按顺序存放到组中。 要将一个十进制转换成二进制,可以使用以下步骤: 1. 将这个十进制除以2,得到一个商和余。 2. 将余存放到组中。 3. 将商作为新的十进制,重复步骤1和步骤2,直到商为0为止。 4. 将组中存放的余按顺序倒过来输出,就得到了该十进制二进制表示。 以下是一个示例程序,展示了如何将一个十进制转换成二进制,并按顺序存放到组中: ``` #include <stdio.h> void dec2bin(int dec, int bin[]) { int i = 0; while (dec > 0) { bin[i] = dec % 2; dec /= 2; i++; } // 如果转换后的组为空,说明原为0 if (i == 0) { bin[0] = 0; i++; } // 反转组,使其按顺序存放 int j; for (j = 0; j < i / 2; j++) { int temp = bin[j]; bin[j] = bin[i - j - 1]; bin[i - j - 1] = temp; } // 输出二进制表示 printf("Binary representation: "); for (j = 0; j < i; j++) { printf("%d", bin[j]); } printf("\n"); } int main() { int dec = 123; int bin[32] = {0}; dec2bin(dec, bin); // 输出 01111011 return 0; } ``` 以上程序中,可以将dec2bin函封装为一个单独的函,便于在其他程序中调用并进行转换。在主函中,定义了一个十进制dec和一个大小为32的组bin(因为一个int类占用32位),并将它们作为参传递给dec2bin函。最终,程序输出了该十进制二进制表示,并按顺序存放到组中。 总之,将一个十进制转换成二进制,可以使用除以2取余法,并按顺序存放到组中。这样可以方便地对二进制进行后续处理,完成更加复杂的计算和逻辑操作。 ### 回答3: 将一个十进制转换成二进制,可以使用除2取余法,即将这个十进制不断除以2,每次将得到的余记录下来,最后将所有余按照得到的顺序排列即可。例如,将14转换成二进制: 14 ÷ 2 = 7 … 0 7 ÷ 2 = 3 … 1 3 ÷ 2 = 1 … 1 1 ÷ 2 = 0 … 1 将余按顺序排列后得到二进制为1110。 将转换后的二进制按位存放到组中,可以先确定组的大小,即二进制的位。以上面的14为例,它的二进制有4位,因此组的大小为4。然后可以用一个循环,每次将二进制的最后一位存储到组的最后一位,然后将二进制右移一位,继续循环,直到将所有位都存储到组中。 代码如下: int decToBin(int n, int* arr) { int i = 0; while (n > 0) { arr[i] = n % 2; n /= 2; i++; } return i; } int main() { int n = 14; int arr[32]; // 组大小为32,可以存放32位二进制 int len = decToBin(n, arr); // 将14转换成二进制,存放到组中,返回位 for (int i = len - 1; i >= 0; i--) { cout << arr[i]; // 逆序输出组中的二进制,即为14的二进制 } return 0; } 输出结果为: 1110 注意,这里的组大小为32,实际上很多二进制并不需要那么多位,可以根据具体情况调整组大小。此外,以上代码没有考虑负的情况,如果需要转换负,需要使用补码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值