在c ++中将负int转换为二进制字符串

时间:2018-01-25 23:32:35

标签: c++ binary

我需要将负int转换为二进制字符串。我使用了两个补码。 例如,我的号码是-1。

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

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

我已经使用了位设置功能,如32位,如

bitset<32>(input).to_string();

原来是1111 1111 1111 1111 1111 1111 1111 1111.我只需要最后4个。我不知道如何取走其余部分。我需要32位,因为我的输入可以是一个很大的数字,如-300。

请帮助我。

1 个答案:

答案 0 :(得分:2)

如果你完全能够拿到一个int,翻转标志然后翻转所有位,但你需要帮助添加一个,这是一个简单的解决方案!

在翻转位之前添加1 。那就是它!

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