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

标签 c++ binary

我需要将负整数转换为二进制字符串。我用了二进制补码。 比如我的号码是-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/

相关文章:

c++ - Mac OS X 链接器

c++ - 使用 Makefile 中的头文件编译 Pybind(不使用 cmake)

c++ - 循环绘制特定坐标

c++ - 如何在没有拷贝的情况下使右值引用传递的对象保持事件状态?

iphone - 在越狱的 iPhone 上执行二进制文件

支持多个编译器的 C++ 代码

python - 比较二进制数据的最快方法?

c++ - 纯 C/C++ 中的二进制序列化

c - 如何将多个结构数组传递给 C 中的单个函数

C - 比较两个二进制数中的每一位