我必须实现一个将字节写入 ostream
对象的方法。让我们称之为 ostream
对象 strobj
。我还有一个用于存储一个字节数据的位缓冲区,我们称之为:
char &bitter;
在我的头文件中,我有这个:
void writeThisByte(int sumInt);
说明说我必须将传入的 int 的“次要字节”写入 ostream
对象,即 strobj
;
但是,我对最低有效字节的确切含义感到困惑。
这是否意味着您正在检查是否 sumInt == 1
?如果是的话,你会这样写到 ostream
吗?
strobj.write(&bitter, 1);
我不确定 :(
原文由 Pangu 发布,翻译遵循 CC BY-SA 4.0 许可协议
想象一个 32 位整数,其中每个位可以是 0 或 1,例如:
最低有效字节是右侧的 8 位。
如果你举一个十进制的例子可能更容易理解:给定数字 291023,’3’ 是最不重要的十进制数字,因为如果你改变它,你对总数的影响最小。在二进制中,我们处理二进制数字(缩写为“位”),一个字节定义为8位,但概念成立。
要获得最低有效字节,只需按位和较大的
int
十六进制 0xFF 或十进制 255 (1+2+4+8+16+32+64+128=255) - 这将清除所有更重要的位并保留 8 个最低有效位…(您也可以将结果存储在更广泛的类型中,例如
int
或std::byte
或std::uint8_t
)。按位与操作的工作方式如下,仅当两个输入均为
1
1