我正在为考试做准备,我想核对一下我对这个问题的答案:
假设二进制值是带符号的8位值,表示两个补码格式,小数范围从-128到127。下列哪一种陈述是正确/假的?
( 1) 11111111 > 0111111
我认为这是错误的,因为第一个数字代表符号,所以我们比较一个负值和一个正数。
2) (11111111 + 11111111) > (00000001 - 00000010)
我不太确定这个,因为我不知道当它溢出时会发生什么。我想电脑只是掉了最后一个数字。所以我认为左边是-128-128= -256。然后右边是1-2= -1,表示为1000001.这意味着,在十进制中,不等式变成-256 > -1,这是假的。但是,我对这件事不太确定。
3) (10000000 / 00000100) == 11100000
第一部分是-0/4,第二部分是非零,那么它会是假的吗?
此外,只有样本问题,我想自己练习/探索。有什么方法可以让我编写一个C++程序来查看这种形式的问题的预期输出吗?
谢谢。
发布于 2019-09-26 21:01:10
在C++中玩这个游戏,有很多位操作库(只要搜索"C++位操作库“就会得到很多结果)。举几个例子:
你可能会或不可能找到一个有一个内置的概念,二的补充。无论如何,在这些库提供的基础上实现这种功能可能是一个有用的练习,例如,通过子类化它们提供的东西,或者编写自己的类,将现有的库实现封装为数据成员。
https://stackoverflow.com/questions/58121063
复制相似问题