将二进制数更改为2C表示法
Change binary number to 2C notation
我必须创建一个函数,该函数将允许我将二进制数更改为2C表示法中的二进制数。
所以。。我有这样的东西:
string changeTo2C(int number){
int temp=number;
if(number<0)
number*=-1;
string binary=changeToBin(number); //number changed to binary
//complement to 8bits
binary=complementBits(binary);
if(temp<0)
{
//negate
for(int i=0; i<howManyBits; i++)
{
if(binary[i]=='0')
binary[i]='1';
else
binary[i]='0';
}
//add bit (1)
binary=addBit(binary); //HERE
}
return binarna;
}
我不知道如何把最后一位加到这个数字上。(在对二进制数取反后,我们必须在整数上加一位,才能将其改为2C表示法)。
我试着这样做:
for(int i=howManyBits-1; i>=0; i--)
{
if(binary[i]=='0')
{
binary[i]=='1';
break;
}
else
{
binary[i]='0';
}
}
这不起作用,我没有更多的想法来解决这个问题。
你能给我建议或粘贴一些代码吗?问候,卡米尔。
我在评论中写了一个例子:74(10)=01001010(2),−74(10"=10110110(U2)
以下是它应该如何工作:我们有:01001010(2)->否定10110101(2)->+1位(+000001)=10110110(U2)
//编辑
我真的做到了:)也许这不是最好的解决方案,但它是有效的。这是我的函数,在取负数后加1位。
string addBit(string binary)
{
string bit="00000001";
for(int i=howManyBites-1;i>=0;i--)
{
if(binary[i]=='0' && bit[i]=='1'){
binary[i]='1';
break;
}
else
{
if(binary[i]=='1' && bit[i]=='1')
{
binary[i]='0';
bit[i-1]='1';
}
else if(binary[i]=='1' && bit[i]=='0')
{
binary[i]='1';
break;
}
}
}
return binary;
}
相关文章:
- 表示"accepting anything for this template argument" C++概念的通配符
- 如何将ampl中的集合表示为c++中的向量
- std::is_base_of表示ctor编译错误
- 输入中的字符串数未知(以字母表示)
- 我可以信任表示整数的浮点或双精度来保持精度吗
- c++模板来表示多项式
- 询问在设计我的手臂模拟器功能表示格式1
- CMakeLists.txt中的命名空间表示法
- C++射线示踪剂ppm表示没有足够的数据来显示图像
- 如何计算Big-O表示法中的平均渐近运行时间
- 我应该如何表示我拥有的连续元素序列?
- 在C++中,使用带有 std::optional 参数的函数<T>来表示可选参数是否有意义?
- 在 std::无符号字符的向量处存储 int 的十六进制表示形式
- 表示类模板C++空类型
- 具有所表示类的相同构造函数签名的代理类模板
- 嵌套在循环中的两个循环的 big-O 表示法
- 具有引用成员的结构是否具有唯一的对象表示形式
- 使用 int 表示浮点除法 C++
- Geeksforgeeks C 程序故障排除:IEE 754 表示法为十进制
- 将二进制数更改为2C表示法