根據this網站,我希望用一個16位整數的二維數組表示一個迷宮。如何在C++中使用按位標誌?
每個16位整數需要持有以下信息:
下面是做到這一點的一種方式(這決不是唯一的方式):一個12x16迷宮網格可以被表示爲一個數組M [ 16] [12] 16位整數。每個陣列元素將包含用於在網格中的單個對應的小區的所有信息,與這樣映射的整數位:
alt text http://www.mazeworks.com/mazegen/mazetut/tut5.gif
擊倒一個壁,設置一個邊界,或者創建一個特定路徑,我們所需要做的就是在一個或兩個數組元素中翻轉位。
如何在16位整數上使用按位標誌,以便我可以設置這些位中的每一位並檢查它們是否設置。
我想以易於閱讀的方式(即Border.W,Border.E,Walls.N等)進行此操作。
這是如何通常在C++中完成的?我是否使用十六進制來表示每一個(即Walls.N = 0x02,Walls.E = 0x04等)?我應該使用枚舉嗎?
另請參閱How do you set, clear, and toggle a single bit?。
不幸的是,這是不可移植的,因爲位的順序是編譯器特定的。 – 2009-02-13 18:38:22