C++ 将负整数转换为c+中的二进制字符串+;

C++ 将负整数转换为c+中的二进制字符串+;,c++,binary,C++,Binary,我需要将负整数转换为二进制字符串。我用了二的补语。 例如,我的号码是-1 首先,我把负数改为正数1。 然后,转换为二进制字符串为0001。 接下来,我翻转字符串是1110 问题是我不知道如何将1添加到字符串中以获得1111 我已经使用了32位的位设置函数,比如 bitset<32>(input).to_string(); 位集(输入).to_string(); 结果是1111111111111111111111111111111111111111111111。我只需要最后4个。我

我需要将负整数转换为二进制字符串。我用了二的补语。 例如,我的号码是-1

首先,我把负数改为正数1。 然后,转换为二进制字符串为0001。 接下来,我翻转字符串是1110

问题是我不知道如何将1添加到字符串中以获得1111

我已经使用了32位的位设置函数,比如

bitset<32>(input).to_string();
位集(输入).to_string();
结果是1111111111111111111111111111111111111111111111。我只需要最后4个。我不知道如何带走剩下的。我需要32位,因为我的输入可以是一个大的数字,比如-300


请帮我解决这个问题。

如果你完全能够得到一个整数,翻转符号,然后翻转所有位,但你只需要添加一个,有一个简单的解决方案

在翻转位之前添加1。就这样


你的号码是-1?添加一个,得到0。翻转标志,仍然是0。转换为二进制字符串,0000。现在翻转位,得到1111=-1

如果你完全能够接受一个整数,翻转符号,然后翻转所有位,但你只需要帮助添加一个,有一个简单的解决方案

在翻转位之前添加1。就这样


你的号码是-1?添加一个,得到0。翻转标志,仍然是0。转换为二进制字符串,0000。现在翻转位,得到1111=-1

非常感谢你!我想出来了。但是你知道如何从32位中只取4位吗?@vnsoshi你可以用来拼接字符串。ie为你做
str=bitset(…;真是太感谢你了!我算出来了。但是你知道怎么从32位中只取4位吗?@vnsoshi你可以用来拼接字符串。ie为你做
str=bitset(…;cout