在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&lt;32&gt;(...; cout &lt;&lt; str.substr(str.size()-4, 4);(看到它运行here)

以上是关于在c ++中将负整数转换为二进制字符串的主要内容,如果未能解决你的问题,请参考以下文章

C语言如何将64位整数转字符串

C ++将十六进制字符串转换为有符号整数

如何在目标 C 中将字符串转换为整数? [复制]

c语言中如何将字符串转化成整数型并输出?

c语言中如何将字符串转化成整数型并输出?

如何在C中将十六进制字符串转换为二进制字符串?