- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经包含了我遇到逻辑问题的程序。该程序基于 booth 的算法,我已经放了一个片段。在这个“工作”代码片段中,用户在数组 (a[0]=1 LSB) 的帮助下接受十进制数转换为十进制形式,最后计算数组 b[] 的 2s 补码。 现在,当我运行程序时:
#include<iostream>
using namespace std;
class booth
{
public:
int n;
int b[3];
int comb[3], q[3]; //b=multiplicand q=multiplier
int bb, qq; //bb and qq store actual decimal no.s
booth()
{
for(int i=0; i<4; i++)
{
b[i]=0; //b array stores multiplicand in binary
q[i]=0; //q array stores multiplier in binary
comb[i]=0; //will store calculated 2s complement in
binary
}
n=4;
bb=0;
qq=0;
}
void acceptMm();
void display();
};
void booth :: acceptMm() //function to accept value from user and
//converting it into binary in the form of
//array and then calculating its 2s complement
{
cout<<"Enter Multiplicand: ";
cin>>bb;
cout<<"Enter Multiplier: ";
cin>>qq;
//decimal to binary
int rem1, rem2, i=0, j=0; //rem1 and rem2 are remainders
while(qq!=0)
{
rem2=qq%2;
qq/=2;
q[i]=rem2;
i++;
}
cout<<q[3]<<q[2]<<q[1]<<q[0]<<endl; // to display binary no.
//again decimal to binary
while(bb!=0)
{
rem1=bb%2;
bb/=2;
b[j]=rem1;
j++;
}
cout<<b[3]<<b[2]<<b[1]<<b[0]<<endl; //to display binary no.
// 2s complement:
int ii=0;
int jj=4; //4 bit binary number
while(b[ii]==0 && jj!=0)
{
comb[ii]=b[ii];
ii++;
jj--;
}
comb[ii]=b[ii];
cout<<b[3]<<b[2]<<b[1]<<b[0]<<endl; //displayed value (problem)
ii++;
jj--;
if(jj==0)
{
return;
}
while(jj!=0)
{
if(b[ii]==0)
{
comb[ii]=1;
ii++;
jj--; }
else
{
comb[ii]=0;
ii++;
jj--;
}
}
}
void booth :: display()
{
cout<<"multiplicand\n";
for(int x=3; x>=0; x--)
{
cout<<b[x]<<" ";
}
cout<<endl;
cout<<"multiplier\n";
for(int j=3; j>(-1); j--)
{
cout<<q[j]<<" ";
}
cout<<endl;
cout<<"compliment of multiplicand\n";
for(int y=3; y>(-1); y--)
{
cout<<comb[y]<<" ";
}
}
int main()
{
booth obj;
cout<<"Booths Algorithm\n";
obj.acceptMm();
obj.display();
return 0;
}
Output
Booths Algorithm
Enter Multiplicand: 5
Enter Multiplier: 4
0100
0101
1101
multiplicand
1 1 0 1
multiplier
0 1 0 0
compliment of multiplicand
0 0 1 1
在输出中,我希望第 6 行为 0101,但得到的是 1101。为什么数组 b[] 的值会发生变化?第 5 行的数组 b[] 的值是正确的,为什么它会改变?根据代码,该值不应该改变,对吗? 我卡住了..请帮忙!!任何建议将不胜感激!!
最佳答案
b、q 和 comb 是 3 个元素的数组,因此 b[3] 是数组溢出(其值未知)。事实上 comb 在 b 之后分配,很可能 b[3] 等于 comb[0]。
关于C++程序Booths Algorithm 2s Complement using array,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35523998/
后一种表示看起来更容易理解。为什么大多数语言都选择前一种?我想 Two's complement 中一定有一些独特的优势特征,使数据操作更容易。 最佳答案 语言不指定数字格式;硬件确实如此。询问 In
我正在阅读有关二进制补码的内容,我知道这种方法最有效,但也可能存在一些缺点。我找不到任何缺点,是否存在转换为二进制补码无法正确表示数字的情况? 最佳答案 二进制补码很棒 - 这就是每个人都使用它的原因
形成二进制数的二进制补码的一种快捷方法是从右边复制位,直到复制了一位,然后对剩余的位进行补码(反转)。 这在 SO here 上有解释以及 Wikipedia . 没有解释的是为什么这个快捷方式有效,
所以我想代表数字-12.5。因此12.5等于: 001100.100 如果我不计算分数,那么它很简单,-12是: 110100 但是-12.5是多少?是110100.100吗?如何计算此负分数? 最佳
我对如何进行从一个补码到二进制补码的转换感到困惑。假设我们有 10101101 的补码。如何将其转换为二进制补码? 谢谢 最佳答案 只看定义: One's complement 表示取反值中的位是原值
在二进制数系统中表示负数时,2 的补码相对于 1 的补码有什么优势?它如何影响二进制系统中数字的特定位表示形式存储的值的范围? 最佳答案 二进制补码相对于二进制补码的主要优点是二进制补码只有一个零
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 7 年前。 Improve this ques
我的代码是一个将十进制转换为二进制的类。它将显示二进制、一个的补码和两个的补码。到目前为止,我已经弄清楚了补码,但在找到补码的解决方案时遇到了问题。我的计划是使用一个补码的输出作为二进制补码方法的输入
我有一些功能,大型分析软件的一部分,需要 bool 掩码将数组项分成两组。这些函数是这样的: def process(data, a_mask): b_mask = -a_mask r
当我给出例如:-2 或 -8 时,我得到 110, 11000。但我想得到 10, 1000,因为它必须使用最小二进制数。所以我必须用另一种方式来应对消极的情况。我尝试交换 1 和 0 直到达到 LS
我找不到办法做到这一点... raw_string a a [1] "\"+001\", M. http://goo.gl/3EXxy6 via @MYTF1News" 最佳答案 我也会使用循环:
我查看了 ISA 规范并在互联网上搜索了此问题的答案,但我找不到。 在 RISC-V ISA 中,负数应该用一个补码还是二进制补码表示?或者,这个决定是否留给实现者? 我问的原因是我正在编写一个 RV
假设2的补码表示的5位数字可以表示的最大值和最小值是多少? 我是否找到了 5 位数字的最小值和最大值,它们是 00000,但我不确定最大值是多少。然后转换为二进制补码?这听起来很愚蠢,但这是我唯一能想
我了解ramda的complement函数的使用,该函数会反转谓词的返回。我无法理解的是为什么使用“complement” 作为名称。 const invertPredicate = R.comple
目前我可以从这样的表中获取不同的条目: SELECT DISTINCT ON (abc.entry) abc.* FROM table abc JOIN table1 def ON abc.e
-1可以4位二进制表示为(2的补码)1111 15也表示为1111。 那么,CPU从内存中获取值时如何区分15和-1? 最佳答案 当一个字节从一个位置移到另一个位置时,CPU并不关心该字节是保留-1还
我有 3 种补充给定二进制数的方法。第一种和第三种方法不会出现任何整数溢出错误。你能解释一下为什么第二种方法会出现这个运行时错误吗? 这是代码: int findComplement1(int nu
我已经包含了我遇到逻辑问题的程序。该程序基于 booth 的算法,我已经放了一个片段。在这个“工作”代码片段中,用户在数组 (a[0]=1 LSB) 的帮助下接受十进制数转换为十进制形式,最后计算数组
这是一个非常幼稚的问题(我知道),但我认为这将是一个很好的起点,可以考虑如何实际执行 CPU 的基本指令集: 在二进制补码系统中,您不能反转您的实现可以表示的最大负数的符号。理论上的原因很明显,最大负
我正在开始 Python 编程。我正在阅读基本教程,但这一点对我来说不是很清楚。如果您能给我任何帮助,我将不胜感激。 最佳答案 ~3 表示“反转”3。使用 two's complement在自然数数据
我是一名优秀的程序员,十分优秀!