十进制到二进制转换
我需要使用C编程将20位十进制转换为二进制。我将创建什么缓冲区,因为它会非常大,即使计算器无法计算将20位转换为二进制。十进制到二进制转换
这里是什么,我打算完成样品:
咱们是假定这段代码: 我键入通过我的键盘这个值到缓冲区。同时,我正在使用AT85C55WD Mcu。
unsigned char idata token [20] =(2,3,5,6,3,3,4,4,3,2,4,4,6,7,4,3,4,5,3 ,3);
我想结果
类型限定可变convrt_token = 23562244324467434533;
这可能使用C吗?如果是这样,那么我该怎么办呢?
这里是高贵的解决方案.... :)
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<unistd.h>
#include<assert.h>
#include<stdbool.h>
#define max 10000
#define RLC(num,pos) ((num << pos)|(num >> (32 - pos)))
#define RRC(num,pos) ((num >> pos)|(num << (32 - pos)))
void tobinstr(int value, int bitsCount, char* output)
{
int i;
output[bitsCount] = '\0';
for (i = bitsCount - 1; i >= 0; --i, value >>= 1)
{
output[i] = (value & 1) + '0';
}
}
int main()
{
char s[50];
tobinstr(65536,32, s);
printf("%s\n", s);
return 0;
}
非常感谢艾莉亚。 –
十进制每个数字有10个值,0..9。所以你需要二进制的3到4位数字。所以我们假设4保持简单。
因此对于20位十进制数,您需要一个80位二进制数字。
你可以用字符来做到这一切,以保持简单。我认为这是为了好玩。
char decnum [20]; char binnum [80];
祝你好运。
我正在编辑我想要完成的示例代码的问题。 –
感谢吉顿,但我不打算将每个数字转换为二进制。 –
将整个20位转换为二进制将给出66位。 –
从Gidon提到的开始。然后,你只需要定义一个函数“decToBin”或类似的东西,你可以使用这样的:
char decnum[20];
char binnum[80];
// ... get the values, do zero initialization etc...
decToBin(decnum, binnum);
,你准备好去。
decToBin函数可以很容易地实现为一个常见的长分割算法。这应该不会太难。
玩得开心;)
编辑:详细说明:
看看你的最后一个数字。它可以被2整除吗?
- >是:你的二进制数字为0
- >无:您的二进制数字将是1除以2(长除法preferrably)和截断如果必要的话,整个十进制数。
重新开始。您将以相反的顺序得到二进制数字。 (重复,直到你的十进制数为0)
尝试int数组。 –
是的,谢谢iMom0。但它的方式我会去做的! –
买一个新的计算器。 –