คำถามติดแท็ก std-bitset

11
วิธีการพิมพ์ (ใช้ cout) ตัวเลขในรูปแบบไบนารี?
ฉันกำลังเรียนหลักสูตรวิทยาลัยเกี่ยวกับระบบปฏิบัติการและเรากำลังเรียนรู้วิธีการแปลงจากเลขฐานสองเป็นเลขฐานสิบหก, ทศนิยมให้เป็นเลขฐานสิบหกเป็นต้นและวันนี้เราเพิ่งได้เรียนรู้วิธีการจัดเก็บหมายเลขลงนาม / ไม่ได้ลงนามในหน่วยความจำ + 1) เรามีแบบฝึกหัดสองข้อให้ทำบนกระดาษและฉันต้องการตรวจสอบคำตอบก่อนส่งงานให้ครู ฉันเขียนโปรแกรม C ++ สำหรับแบบฝึกหัดแรก แต่ตอนนี้ฉันติดอยู่กับวิธีที่ฉันสามารถตรวจสอบคำตอบของฉันด้วยปัญหาต่อไปนี้: char a, b; short c; a = -58; c = -315; b = a >> 3; และเราจำเป็นต้องแสดงแทน binary ในหน่วยความจำของa, และbc ฉันทำมันลงบนกระดาษและให้ผลลัพธ์ต่อไปนี้กับฉัน (การแทนเลขฐานสองทั้งหมดในหน่วยความจำของตัวเลขหลังจากส่วนเติมเต็มของทั้งสอง): a = 00111010 (มันเป็นถ่านดังนั้น 1 ไบต์) b = 00001000 (มันเป็นถ่านดังนั้น 1 ไบต์) c = 11111110 11000101 …

1
เหตุใดเวกเตอร์ <bool> ของ libc ++ :: const_reference จึงไม่ใช่บูล
มาตรา 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 ++ ครั้งแรก อะไรคือแรงจูงใจสำหรับการไม่ปฏิบัติตามนี้?
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.