在c ++中将负整数转换为二进制字符串
Posted
技术标签:
【中文标题】在c ++中将负整数转换为二进制字符串【英文标题】:Convert negative int to binary string in c++ 【发布时间】:2018-01-25 23:32:34 【问题描述】:我需要将负整数转换为二进制字符串。我用了补码。 比如我的号码是-1。
首先,我将负数改为正数 1。 然后,转换为二进制字符串是 0001。 接下来,我翻转字符串是1110。
问题是我不知道如何在字符串中加 1 得到 1111。
我已经使用了像 32 位这样的位设置功能
bitset<32>(input).to_string();
原来是1111 1111 1111 1111 1111 1111 1111 1111。我只需要最后4个。我不知道如何带走其余的。我需要 32 位,因为我的输入可能是一个很大的数字,例如 -300。
请帮帮我。
【问题讨论】:
【参考方案1】:如果您完全能够获取一个 int,翻转符号,然后翻转所有位,但您只需要帮助添加一个,那么有一个简单的解决方案!
在翻转位之前添加 1。就是这样!
你的号码是-1?加一,得到 0。翻转符号,仍然是 0。转换为二进制字符串,0000。现在翻转位,你有 1111 = -1!
【讨论】:
非常感谢!我想到了。但是你知道如何从 32 位中只得到 4 位吗? @vnsoshi 可以使用substr() 拼接字符串。即为你你会做str = bitset<32>(...; cout << str.substr(str.size()-4, 4);
(看到它运行here)以上是关于在c ++中将负整数转换为二进制字符串的主要内容,如果未能解决你的问题,请参考以下文章