如何将小数转换为二进制补码字符串

乔夫斯

我对 C++ 真的很陌生,我对我的程序有点困惑。该程序应该采用 2 个整数并将它们转换为具有 L 大小位的二进制补码字符串,但是当我运行该程序时,我不断收到字符串下标超出范围错误。我可能有很多错误,如果你们能指出一些大错误,那就太好了。我的程序:

string reverse(string s) 
{
    string x="";
for(int i=s.length()-1;i>=0;i--)
{
    x += s[i];
}
    return x;
}
string twosComplementStringAddition(string a,string b)
{
    string c;
    int count;
    for(int i=0;i<a.length();i++)
    {
        if(count>0)
            c[i]='1';
        else if(a[i]=='1' & b[i]=='1')
        {
            c[i]='0';
            count++;
        }
        else if((a[i]=='1' & b[i]=='0')|| (a[i]=='0' & b[i]=='1'))
            c[i]='1';
        else if(a[i]=='0' & b[i]=='0')
            c[i]='0';
        count=0;
    }
    return c;
    }
    string negative(string a)
    {
        for(int i=0;i<a.length();i++)
    {
        if(a[i]=='1')
            a[i]='0';
        else
            a[i]='1';
    }
    reverse(a);
    string x="1";
    twosComplementStringAddition(a,x);
    reverse(a);
    return a;
}
string decimalToTwosComplementString(int a, int L)
{
    string s="";
    L= s.length();
    int b;
        for(int i=0;i<L-1;i++)
        {
            b=a%2;
            if(b==1)
                s[i]='1';
            else if(b==0)
                s[i]='0';
            a=a/2;
        }
        reverse(s);
        if(a<0)
        {
            negative(s);
            return s;
        }
        else
        return s;
}
int twosComplementStringToDecimal(string a)
{
    int result=0;
    if(a[0]=='0')
    {
        reverse(a);
        for(int i=0;i<a.length();i++)
    {
        if(a[i]=='1')
        {
            result= result + pow(2,static_cast<float>(i));
        }
        else if(a[i]=='0')
        {
            result = result + 0;
        }
    }
    }
    else
    {
    negative(a);
    int resulta=0;
    reverse(a);
    for(int i=0;i<a.length();i++)
{
    if(a[i]=='1')
    {
    resulta= resulta + pow(2,static_cast<float>(i));
    }
    else if(a[i]=='0')
    {
        resulta = resulta + 0;
    }
}
return resulta;
}
return result;
}
int main()
{
//Read in the bit pattern size
int L;
do
{
    cout << "Enter positive integer for the bit pattern size ";
    cin >> L;
}while (L <= 0);

//Read in two integers a and b 
int a, b;
cout << "Enter an integer a ";
cin >> a;
cout << "Enter an integer b ";
cin >> b;

//Calculate the decimal arithmetic sum of a and b and print the result
int c1 = a + b;
cout << "In decimal " << a << " + " << b << " is " << c1 << endl;

//Compute the two's complement representations of a and b
//Each integer must be represented in L-bits pattern
//Also these two's complement representations must be returned as string data types
string A = decimalToTwosComplementString(a, L);
string B = decimalToTwosComplementString(b, L);

//Print the two's complement representations of a and b
cout << "The two's complement of " << a << " is\t " << A << endl;
cout << "The two's complement of " << b << " is\t " << B << endl;

//Compute the binary sum of the two's complement representations of a and b
//The result must be returned as L-bit pattern string data type
string C = twosComplementStringAddition(A, B);

//Print the two's complement representation binary sum
cout << "The binary sum of " << A << " and " << B << " is " << C << endl;

//Convert the two's complement representation binary sum to decimal and print
int c2 = twosComplementStringToDecimal(C);
cout << "In two's complement arithmetic, " << a << " + " << b << " is " << c2 << endl;
system("Pause");
return 0;
}

对于任何愿意提供帮助的人,感谢您的时间!编辑:几个小时后,我终于成功了,谢谢你们帮助初学者!

保罗·麦肯齐

您从一个空字符串开始,并尝试访问字符串中不存在的项目:

string c;
//...
for(int i=0;i<a.length();i++)
{ 
   //...
   c[i]='0'; // <-- The string is empty, but you're trying to access element i.
   //...
}

要修复错误,请将c字符串调整为适当的大小,以便这些条目存在。

string c;
c.resize(a.length());
//..

.

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将二进制补码字符串解析为数字

来自分类Dev

将二进制字符串转换为二进制补码

来自分类Dev

如何将二进制补码二进制字符串转换为负十进制数字?

来自分类Dev

将整数转换为带符号的2的补码二进制字符串

来自分类Dev

如何将二进制字符串的文字字符串表示形式转换为二进制字符串?

来自分类Dev

如何将二进制消息转换为字符串

来自分类Dev

如何将字符串转换为二进制?

来自分类Dev

如何将字符串转换为二进制缓冲区?

来自分类Dev

如何将Elixir二进制文件转换为字符串?

来自分类Dev

如何将二进制字符串转换为int数组?

来自分类Dev

如何将二进制数据从BinaryJS转换为字符串/文本

来自分类Dev

如何将int转换为二进制字符串swift?

来自分类Dev

如何将字符串转换为二进制

来自分类Dev

如何将二进制数据从BinaryJS转换为字符串/文本

来自分类Dev

如何将二进制字符串转换为 base64

来自分类Dev

颤振如何将十六进制字符串转换为二进制字符串?

来自分类Dev

如何将此二进制字符串转换为普通字符串?

来自分类Dev

如何将此二进制字符串转换为普通字符串?

来自分类Dev

将字符串转换为二进制?

来自分类Dev

将二进制转换为字符串

来自分类Dev

将字符串转换为二进制?

来自分类Dev

将二进制字符串转换为二进制

来自分类Dev

将二进制字符串转换为二进制

来自分类Dev

将二进制字符串(ASCII)转换为二进制文件

来自分类Dev

Python 将二进制字符串转换为二进制整数

来自分类Dev

如何将字符转换为二进制?

来自分类Dev

如何将字符转换为二进制?

来自分类Dev

如何将Scala Double转换为二进制64位字符串

来自分类Dev

如何将包含数字的字符串转换为二进制表示形式?

Related 相关文章

  1. 1

    如何将二进制补码字符串解析为数字

  2. 2

    将二进制字符串转换为二进制补码

  3. 3

    如何将二进制补码二进制字符串转换为负十进制数字?

  4. 4

    将整数转换为带符号的2的补码二进制字符串

  5. 5

    如何将二进制字符串的文字字符串表示形式转换为二进制字符串?

  6. 6

    如何将二进制消息转换为字符串

  7. 7

    如何将字符串转换为二进制?

  8. 8

    如何将字符串转换为二进制缓冲区?

  9. 9

    如何将Elixir二进制文件转换为字符串?

  10. 10

    如何将二进制字符串转换为int数组?

  11. 11

    如何将二进制数据从BinaryJS转换为字符串/文本

  12. 12

    如何将int转换为二进制字符串swift?

  13. 13

    如何将字符串转换为二进制

  14. 14

    如何将二进制数据从BinaryJS转换为字符串/文本

  15. 15

    如何将二进制字符串转换为 base64

  16. 16

    颤振如何将十六进制字符串转换为二进制字符串?

  17. 17

    如何将此二进制字符串转换为普通字符串?

  18. 18

    如何将此二进制字符串转换为普通字符串?

  19. 19

    将字符串转换为二进制?

  20. 20

    将二进制转换为字符串

  21. 21

    将字符串转换为二进制?

  22. 22

    将二进制字符串转换为二进制

  23. 23

    将二进制字符串转换为二进制

  24. 24

    将二进制字符串(ASCII)转换为二进制文件

  25. 25

    Python 将二进制字符串转换为二进制整数

  26. 26

    如何将字符转换为二进制?

  27. 27

    如何将字符转换为二进制?

  28. 28

    如何将Scala Double转换为二进制64位字符串

  29. 29

    如何将包含数字的字符串转换为二进制表示形式?

热门标签

归档