字序與位序

2021-08-03 15:57:48 字數 2828 閱讀 7895

1、字序

在幾乎所有的機器中,多位元組物件都被儲存為連續的位元組序列,物件的位址為所用位元組中最小的位址

排列物件的中位元組有兩個通用規則:小端法(little endian)和大端法(big endian)

小端法即最低有效位元組在最前面(低位址);大端法正好相反。

2、位序位欄位(bit-field),或簡稱字段,是「字」中相鄰位的集合。「字」(word)是單個的儲存單元,它同具體的實現有關。欄位的所有屬性幾乎都同具體的實現有關。字段是否能覆蓋自邊界由具體的實現定義。字段可以不命名,無名字段(只有乙個冒號和寬度)起填充作用。特殊寬度0可以用來強制在下乙個字邊界上對齊(長度為0的位域是給編譯器的乙個訊號,告訴編譯器將下乙個位域在乙個儲存單元的起始位置對齊)。某些機器上字段的分配是從字的左端至右端進行的,而某些機器上則相反(移植需要考慮這方面的問題)。字段不是陣列,並且沒有位址,因此對它們不能使用&運算子。

位域位元組序必須注意:不論大端序或小端序cpu,多位元組位域都是從儲存器的低位元組開始儲存;在小端序cpu中,在乙個位元組中,從低位開始儲存;在大端序cpu中,在乙個位元組中,從高位開始儲存。

}大小端中位序的情況

#include // opaque and show

#define yes 1

#define no 0

// line styles

#define solid 1

#define dotted 2

#define dashed 3

// primary colors

#define blue 4 /* 100 */

#define green 2 /* 010 */

#define red 1 /* 001 */

// mixed colors

#define black 0 /* 000 */

#define yellow (red | green) /* 011 */

#define magenta (red | blue) /* 101 */

#define cyan (green | blue) /* 110 */

#define white (red | green | blue) /* 111 */

const char * colors[8] = ;

// bit field box properties

struct box_props

;

/* each prepocessor directive defines a single bit */

#define key_up (1 << 0) /* 000001 */

#define key_right (1 << 1) /* 000010 */

#define key_down (1 << 2) /* 000100 */

#define key_left (1 << 3) /* 001000 */

#define key_button1 (1 << 4) /* 010000 */

#define key_button2 (1 << 5) /* 100000 */

int gamecontrollerstatus = 0;

/* sets the gamecontrollerstatus using or */

void keypressed(int key)

/* turns the key in gamecontrollerstatus off using and and ~ (binary not)*/

void keyreleased(int key)

/* tests whether a bit is set using and */

int ispressed(int key)

大端序與小端序 位元組序與位域的儲存

談到位元組序的問題,必然牽涉到兩大cpu派系 motorola的powerpc系列cpu和intel的x86系列cpu。powerpc系列採用big endian 大端序 大字節序 高位元組序 方式儲存資料,而x86系列則採用little endian 小端序 小字節序 低位元組序 方式儲存資料。何...

大端序與小端序

簡單點說,就是位元組的儲存順序,如果資料都是單位元組的,那怎麼儲存無所謂了,但是對於多位元組資料,比如int,double等,就要考慮儲存的順序了。注意位元組序是硬體層面的東西,對於軟體來說通常是透明的。再說白一點,位元組序通常只和你使用的處理器架構有關,而和程式語言無關,比如常見的intel x8...

大端序與小端序

簡單點說,就是位元組的儲存順序,如果資料都是單位元組的,那怎麼儲存無所謂了,但是對於多位元組資料,比如int,double等,就要考慮儲存的順序 了。注意位元組序是硬體層面的東西,對於軟體來說通常是透明的。再說白一點,位元組序通常只和你使用的處理器架構有關,而和程式語言無關,比如常見的 intel ...