我有一個問題,我有點卡住了,並且我被同事告知,這將是一個尋求幫助的好地方。 我想在Java中實現C風格的位域。 下面是一個粗略的例子(我目前沒有實際的代碼在我面前)。 typedef union
{
typedef struct
{
unsigned short a :1;
unsigned short b :1;
unsigned short
可能重複: When is it worthwhile to use bit fields? 我最近找了位運算符和偶然發現了bitfield的概念。這看起來很有趣,而且是一個非常酷的概念,但是何時和/或爲什麼一個人會在他們的代碼中使用它?我知道它在嵌入式系統編程中用得相當多,但爲什麼(我似乎無法找到它爲什麼有用)?它有什麼好處嗎?另外一些地方的位域有用嗎?
我不知道該怎麼稱呼它,所以我不知道如何搜索它。 unsigned int odd : 1; 編輯: 要細說,它來自這個片段: struct bitField {
unsigned int odd : 1;
unsigned int padding: 15; // to round out to 16 bits
};
我推測這涉及到位,但我仍然不是所有的理解方式。
我們有十幾個模擬器在UDP上相互交談。接口定義在數據庫中進行管理。模擬器使用不同的語言編寫;大多數是C++,一些是Java和C#。目前,當系統工程師在接口定義數據庫中進行更改時,模擬器開發人員會手動更新其代碼中的通信數據結構。消息大部分是2-5個字節,每個信號都有位字段。我想要做的是從接口定義數據庫生成一個描述字節和位字段定義的文件,並讓每個開發人員以最小的麻煩將其添加到他的模擬器代碼中。 Bar
我想知道爲什麼位域可以與工會/結構一起工作,但不能和像int或short這樣的正常變量一起工作。 這工作: struct foo {
int bar : 10;
};
但這種失敗: int bar : 10; // "Expected ';' at end of declaration"
爲什麼這個功能僅在工會/結構,而不是與變量可用?技術不一樣嗎? 編輯: 如果將允許你能與例