【发布时间】:2013-02-14 09:42:20
【问题描述】:
所以,如果我理解正确的话,整数是字节的集合,它表示以二为底格式的数字。
因此,如果我有 unsigned int test=0,则应该只包含一个位字段,所有位都为零。然而,
unsigned int test=0;
test=~test;
产生-1。
我原以为这会用'1' 填充所有位,从而使整数在该系统上尽可能大....
感谢您的帮助!
【问题讨论】:
-
-1是最大的无符号整数。有什么问题? -
这完全取决于您所说的 produces 到底是什么意思。你如何检查/输出/打印结果?
-
我想您正在使用
printf而不是std::cout来打印结果。所以这应该被标记为 C 而不是 C++ -
听起来您通过将错误类型的数据传递给 printf 来调用 UB。这里真正的问题是:哪个手册告诉你传递一个无符号整数来对应一个 %d 格式说明符是可以的?
-
这是一个微控制器...所以我真的关心效率/找出实际大小。但是,是的,@qdii,我使用的是 printf……但在 C++ 中的行为是一样的……
标签: c++ c integer bit-manipulation