将十进制转换为二进制

发布于 2024-12-08 18:16:23 字数 461 浏览 1 评论 0原文

我想将十进制数转换为二进制数。我正在使用这种方法:

- (NSMutableString*)intStringToBinary:(long long)element{
    NSMutableString *str = [[NSMutableString alloc] initWithString:@""];
    for(NSInteger numberCopy = element; numberCopy > 0; numberCopy >>= 1)
    {
        [str insertString:((numberCopy & 1) ? @"1" : @"0") atIndex:0];
    }
    return str;
}

如果数字“元素”>0,则一切都会顺利。如果数字<0,则存在问题。例如,该方法无法转换数字“-1”。我可以做什么来解决这个问题?提前致谢!!

I want to convert decimal number in binary number. I'm using this method:

- (NSMutableString*)intStringToBinary:(long long)element{
    NSMutableString *str = [[NSMutableString alloc] initWithString:@""];
    for(NSInteger numberCopy = element; numberCopy > 0; numberCopy >>= 1)
    {
        [str insertString:((numberCopy & 1) ? @"1" : @"0") atIndex:0];
    }
    return str;
}

everything is going fine if the number "element" is >0. If the number is <0 there is the problem. For examle the method can't convert the number "-1". What can i do to solve the problem? Thanks in advance!!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

爱冒险 2024-12-15 18:16:23

您需要为标志添加额外的位。

示例:

1xxxx 表示二进制数+ xxxx

0yyyy 表示二进制数- yyyy

You need an extra bit for the sign.

Example:

1xxxx represents the binary number + xxxx.

0yyyy represents the binary number - yyyy.

爱冒险 2024-12-15 18:16:23

这是一种使用 Wallar 算法在 Python 中实现此目的的方法。输入和输出是列表。

from math import *
def baseExpansion(n,c,b):
    j = 0
    base10 = sum([pow(c,len(n)-k-1)*n[k] for k in range(0,len(n))])
    while floor(base10/pow(b,j)) != 0: j = j+1
    return [floor(base10/pow(b,j-p)) % b for p in range(1,j+1)]

Here is a way to do it in Python using Wallar's Algorithm. The input and output are lists.

from math import *
def baseExpansion(n,c,b):
    j = 0
    base10 = sum([pow(c,len(n)-k-1)*n[k] for k in range(0,len(n))])
    while floor(base10/pow(b,j)) != 0: j = j+1
    return [floor(base10/pow(b,j-p)) % b for p in range(1,j+1)]
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文