这几天学组成原理,碰到需要输出二进制数的情况,验证a÷(2^n)≠a>>n,我想用高级语言内在的模块实现,程序如下。
bitset后面的<>中的数字,指定输出的位数
#include
#include
using namespace std;
int main()
{
int a;
cin>>a;
cout<(a)<(a/4)<((a>>2))<
如果输入整型-5,
-5÷(2^2)=-1
-5>>2=-2
可以看到结果如下,C语言中数据用补码表示,此处没有显示符号位。-5补码11111011,补码11111111对应-1,补码11111110对应-2。
则得出结论,即便除法采用算术移位,计算机中除以2的n次方,也不能简单地等同于右移2的n次方。