位段
位段定義,賦值,輸出,占用的問題說明
遇到位段相關的問題,這裡記錄下來:
typedef struct a
newstru;
int _tmain(int argc, _tchar* argv)
列印結果如下:
value is a-hex:fffffff0, a-dec:-16 b-hex:1,b-dec:1 te-(int) 33323130
最初對結果非常不解,下面是解釋:\
1.在使用hex輸出時,如果最高位為1,則將被認成負值,剩餘高位用1填充
此時,如果以%d輸出的話,則取補碼(取反+1)然後前面加個負號
如果以%x輸出的話,則高位填充1,然後直接列印出來
舉例:以下struct a為例,
被拷貝值 0x30
則列印 a = -16或者 0xfffffff0
b = 1
另,位段只能以int, unsigned int, signed int 來定義,且定義的位段大小不可以超過sizeof(int)
連續幾個位段變數,如果大小之和都在sizeof(int)內的話,將擠在一起
但是如果當下乙個位段變數擠不下的話,將拋棄上面的空間,從新開始
舉例:這裡 int為32位
struct a
則b將另起計算空間,而不使用a剩下的1bit
struct a
則ab將擠在一起,假設struct a = 0x000102cd
則a = 0x0d
b = 0x0c
資料結構 全排列問題
輸入乙個陣列,列印出該陣列中數字的所有排列。例如輸入陣列123,則輸出由數字1 2 3 所能排列出來的所有字串 123 132 213 231 321 和312。從集合中依次選出乙個元素,作為排列的第乙個元素,然後對剩餘的元素進行全排列,如此遞迴處理,從而得到所有元素的全排列。以123,為例 1為控...
排列的學習資料 資料結構與演算法
如果按排序過程中依據的不同原則對內部排序方法進行分類,大致可分為5類 插入排序 交換排序 選擇排序 歸併排序和分配排序 如果按排序過程中所需的工作量來區分,則可分為3類 1 簡單的排序方法,其時間複雜度為 o n2 2 改進的排序方法,其時間複雜度為o nlog2n 3 基數排序,其時間度為o d ...
資料結構 3 位查詢
總時間限制 5000ms 記憶體限制 65536kb 給出n個範圍在 0,65535 的整數,程式設計支援以下的操作 1 修改操作 c d,所有的數都增加d。如果超過65535,把結果模65536。0 d 65535 2 查詢操作 q i,統計在n個正整數中有多少個整數其對應的二進位制形式的第i位二...