我需要将负整数转换为二进制字符串。我用了二进制补码。 比如我的号码是-1。
首先,我将负数改为正数 1。 然后,转换成二进制串就是0001。 接下来,我翻转字符串是 1110。
问题是我不知道如何将字符串加1得到1111。
我已经使用了像 32 位一样的位设置功能
bitset<32>(input).to_string();
结果是1111 1111 1111 1111 1111 1111 1111 1111,我只需要最后4个,剩下的不知道怎么带走。我需要 32 位,因为我的输入可以是一个很大的数字,例如 -300。
请帮我解决这个问题。
最佳答案
如果您完全能够接受一个整数,翻转符号,然后翻转所有位,但您只需要加一的帮助,那么有一个简单的解决方案!
在翻转位之前添加 1。就是这样!
你的数字是-1?加一,得到 0。翻转符号,仍然是 0。转换为二进制字符串,0000。现在翻转位,你有 1111 = -1!
关于c++ - 在 C++ 中将负整数转换为二进制字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48453618/