我想把十进制数27转换成二进制,首先转换数字2,并将其二进制值放入数组中,然后转换数字7,将其二进制数放入该数组中。我该怎么办?提前感谢
发布于 2011-04-13 04:31:48
这就是binary-coded decimal。从右到左工作是最容易的。取模10的值(C/C++/ObjC中的%运算符)并将其放入数组中。然后将值除以10 (C/C++/ObjC中的/运算符)。继续,直到您的值为零。如果首先需要最重要的数字,则反转数组。
发布于 2011-04-13 04:45:23
如果我没理解错的话,您希望从27转到一个看起来像{0010, 0111}的数组。
如果您了解基本系统(特别是十进制系统)的工作原理,那么这应该很简单。
首先,您会发现数字除以10后的余数。在本例中,您的数字27将得到7。然后,将数字除以10,并将其存储回该变量中。您的数字27将导致2。
你这样做了多少次?
这样做,直到您没有更多的数字。你能有几位数?如果你想一下数字100,它有3个数字,因为这个数字需要记住,数字中有一个10^2。另一方面,99并非如此。
上一个问题的答案是输入数字的对数底10的1+下限。
Log = 100等于2,加1等于3,等于位数。99的对数略小于2,但地板是1,加1是2。
在java中是这样的:
int input = 27;
int number = 0;
int numDigits = Math.floor(Log(10, input)) + 1;
int[] digitArray = new int [numDigits];
for (int i = 0; i < numDigits; i++) {
number = input % 10;
digitArray[numDigits - i - 1] = number;
input = input / 10;
}
return digitArray;Java没有可移植到任何基数的Log函数(它有用于基数e的Log函数),但是为它创建一个函数是很简单的。
double Log( double base, double value ) {
return Math.log(value)/Math.log(base);
}祝好运。
https://stackoverflow.com/questions/5641202
复制相似问题