Questions tagged «std-bitset»

11
如何以二进制形式打印(使用cout)数字?
我正在上一本关于操作系统的大学课程,我们正在学习如何从二进制转换为十六进制,从十进制转换为十六进制,等等。今天,我们刚刚学习了如何使用二进制补码(〜number)将有符号/无符号数字存储在内存中。 +1)。 我们有两个练习在纸上做,我希望能够在将作业提交给老师之前验证我的答案。我为前几个练习编写了一个C ++程序,但现在我对如何验证以下问题的答案感到困惑: char a, b; short c; a = -58; c = -315; b = a >> 3; 我们需要显示的二进制表示在内存中的a,b和c。 我已经在纸上做完了,它给了我以下结果(所有二进制表示形式都存储了两个补数之后的数字): a = 00111010(这是一个字符,所以1个字节) b = 00001000(这是一个字符,所以1个字节) c = 11111110 11000101(很短,所以2个字节) 有没有办法验证我的答案?在C ++中是否有一种标准的方法可以显示数字在内存中的二进制表示形式,还是我必须自己对每个步骤进行编码(计算二者的补码,然后转换为二进制)?我知道后者不会花很长时间,但是我很好奇是否有标准的方法可以这样做。

1
为什么libc ++的vector <bool> :: const_reference不是bool?
第23.3.7节vector&lt;bool&gt;[vector.bool] 类的第1段规定: template &lt;class Allocator&gt; class vector&lt;bool, Allocator&gt; { public: // types: typedef bool const_reference; ... 但是,使用libc ++时,该程序无法编译: #include &lt;vector&gt; #include &lt;type_traits&gt; int main() { static_assert(std::is_same&lt;std::vector&lt;bool&gt;::const_reference, bool&gt;{}, "?"); } 此外,我注意到C ++标准在此规范中一直到C ++ 98都是一致的。而且我还要指出,自从首次引入libc ++以来,libc ++一直未遵循此规范。 这种不符合的动机是什么?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.