首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >objective-c中的二进制到十进制

objective-c中的二进制到十进制
EN

Stack Overflow用户
提问于 2011-04-13 04:23:52
回答 2查看 2K关注 0票数 1

我想把十进制数27转换成二进制,首先转换数字2,并将其二进制值放入数组中,然后转换数字7,将其二进制数放入该数组中。我该怎么办?提前感谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-04-13 04:31:48

这就是binary-coded decimal。从右到左工作是最容易的。取模10的值(C/C++/ObjC中的%运算符)并将其放入数组中。然后将值除以10 (C/C++/ObjC中的/运算符)。继续,直到您的值为零。如果首先需要最重要的数字,则反转数组。

票数 2
EN

Stack Overflow用户

发布于 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中是这样的:

代码语言:javascript
复制
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函数),但是为它创建一个函数是很简单的。

代码语言:javascript
复制
double Log( double base, double value ) {
    return Math.log(value)/Math.log(base);
}

祝好运。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5641202

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档