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