bit-fields

    2熱度

    2回答

    爲什麼我們沒有4位大小的數據類型?如果我們如此傾向,爲什麼我們不能製造它們呢?我已經看到了比特場,但是我聽說它們不能攜帶,也許還沒有被使用?我認爲這是機器如何解釋鑽頭位置的位置值的結果。 (big-endian,little-endian) typedef struct { int b1 : 1; int b2 : 1; .. .. ..

    -2熱度

    1回答

    如果我知道我在一個小端機器上,我該如何轉換一個14位位域的endiannes? struct { unsigned foo : 14, bar 2; } baz; 我有一種預感,baz.foo = htons(baz.foo)將無法​​正常工作。

    0熱度

    1回答

    該聯合的大小返回16字節(在C++ Builder 2007中)。 typedef union { struct { unsigned Type:2; unsigned Prev:31; unsigned Next:31; unsigned SizeInBytes:32; }; } eMyUnion; 如何修改這個聯合定

    0熱度

    1回答

    我正在處理基本上位標誌搜索蒙版,我正在使用向量。這些指標需要去到機器上的最大整數(stdint.h定義) 基本問題是 searchMask[ UINTMAX_MAX] = false; // or any value > unsigned int 結果如下警告 warning: C4244: 'argument' : conversion from 'uintmax_t' to 'unsign

    1熱度

    3回答

    因此,我將應用程序中的一些位域轉換爲使用EnumSet,我很好奇是否有更好的方法來對X | Y進行比較。目前,我們這樣做: if(bitfield & (X | Y) != 0) { //do stuff } 的EnumSet相當於似乎是: if(enumSet.contains(X) || enumSet.contains(Y)) { //do stuff } 有

    3熱度

    4回答

    我有這樣的定義(這是從微控制器庫,所以它看起來有點不同)位字段: typedef union { byte Byte; struct { byte PTAD0 :1; byte PTAD1 :1; byte PTAD2 :1; byte PTAD3 :1; byte PTAD4 :1;

    6熱度

    3回答

    我想在C++中使用位字段來實現特定的類大小,但由於某種原因,它比我預期的要大。 問題是,具有32位(4字節)的類正在報告(當作爲參數傳遞給sizeof時)5個字節。實施例類波紋管: typedef unsigned char u8; typedef unsigned int u32; class Test { u8 four_bit_field : 4; u8 eight

    2熱度

    2回答

    在下面的代碼 #include <iostream> using namespace std; struct field { unsigned first : 5; unsigned second : 9; }; int main() { union { field word; int i; }; i

    -6熱度

    4回答

    有人能向我解釋什麼標誌和位域。他們似乎是相互關聯的,或者說我得到了錯誤的想法。我有點把握位,他們做了什麼件,是,但我想,讓他們充分解釋,我真的不能找到任何好的教程或指南。 我會很感激,如果有人可以提供有關如何使用它們等一些很好的例子......比如我看到這些類型的表達式所有的時間,我不完全理解他們。只是他們是某種邏輯運營商或某種東西 VARIABLE1 | VARIABLE2 在此先感謝!一個

    1熱度

    3回答

    我使用位域的結構來訪問像素中的每個顏色通道,問題是我經常有代碼以相同的方式應用到每個通道,但是因爲我不能只是迭代對於CI中結構的成員最終會爲每個成員擁有3份相同的代碼,或者更不方便地使用switch-case語句。 我想如果我可以使用一個宏,以便我可以通過提供一個數字訪問一個成員,理想情況下會使.CHAN(i)成爲.r,.g或.b取決於整數變量i是否包含0,1或2.除了我不知道如何製作這樣一個宏,