位段的資料結構 資料排列和列印

2021-07-16 22:08:32 字數 773 閱讀 4709

位段

位段定義,賦值,輸出,占用的問題說明

遇到位段相關的問題,這裡記錄下來:

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位二...