麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

大小端 位域 字節對齊

2019-11-06 07:18:57
字體:
來源:轉載
供稿:網友

一、大小端:

1 大端: 數據低位存放在內存高地址, 數據高位存放在內存低地址

2 小端: 數據低位存放在內存底地址, 數據高位存放在內存高地址

3 網絡字節序以大端傳輸、主機字節序根據CPU架構不同既有大端與有小端

以聯合體來做說明:

union endpoint {	unsigned short n;	char ch[2];};int main(){	endpoint endpoint_t;	endpoint_t.n = 0x1122;	if (endpoint_t.ch[0] == 0x22 && endpoint_t.ch[1] == 0x11)		std::cout << "little ending" << std::endl;	else		std::cout << "big ending" << std::endl;
	return 0;}

/*

二、位域已知一個16位的整數,請按4位為一個數, 寫個求和函數。如:16位整數的二進制為1101 0101 1110 0011, 計算結果為 1101 + 0101 + 1110 + 0011 = 35

*/

union endpoint {	unsigned short n;	char ch[2];};typedef struct set_ {#ifndef __LITTLE_ENDING__	unsigned short a : 4;	unsigned short b : 4;	unsigned short c : 4;	unsigned short d : 4;#else	unsigned short c : 4;	unsigned short d : 4;	unsigned short a : 4;	unsigned short b : 4;#endif}set_t;unsigned short binset_plus(const unsigned short n){	set_t s = { 0 };	memcpy(&s, &n, sizeof(short));	return s.a + s.b + s.c + s.d;}void main(){	endpoint endpoint_t;	endpoint_t.n = 0x1122;	if (endpoint_t.ch[0] == 0x22 && endpoint_t.ch[1] == 0x11)		std::cout << "little ending" << std::endl;	else		std::cout << "big ending" << std::endl;	unsigned short n = 0xD5E3;  // 1101 0101 1110 0011	unsigned short na = binset_plus(n);}/*

三、字節對齊

* /

void main()

{	struct node {	};	unsigned short n = sizeof(node);  // 1	struct node1 {		int a;		char b;		short c;	};	n = sizeof(node1);  //因為結構體node1中最長的數據類型是int,占4個字節,因此以4字節對齊,則該結構體在內存中存放方式為						//|--------int--------|						//|char|----|--short--|						// 4 + 4 = 8	struct node2 {		char b;		int a;		short c;	};	n = sizeof(node2);  //因為結構體node2中最長的數據類型是int,占4個字節,因此以4字節對齊,則該結構體在內存中存放方式為						//|-------char--------|						//|--------int--------|						//|-------short-------|						// 4 + 4 + 4= 12	struct node4 {		bool a;		node1 node1_;		short b;	};	n = sizeof(node4); //4 + 8 + 4 因為node1中最寬字段為int a, 占4字節且小于默認的8字節對齊, 所以取4byte為對齊字節	struct node5 {		bool a;		node1 nodde_;		char d;		double b;		char c;	};	n = sizeof(node5);  //8 + 8 + 8 + 8 + 8 = 40#PRagma pack(4)	struct node6 {		bool a;		node1 nodde_;		char d;		double b;		char c;	};	n = sizeof(node6);  //4 + 8 + 4 + 8 + 4 = 28#pragma pack()}


上一篇:jvm基礎

下一篇:怎樣寫一個lemon的spj

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 久久欧美亚洲另类专区91大神 | 蜜桃精品视频在线观看 | 久久草草影视免费网 | 成人在线视频精品 | 曰韩在线视频 | 31freehdxxxx欧美 | 亚洲午夜国产 | 欧美一级黄色免费看 | 国产成人综合在线视频 | 性爱视频免费 | 一级毛片在线观看视频 | 久草在线视频精品 | 看全色黄大色黄大片女图片 | 无遮挡一级毛片视频 | 娇妻被各种姿势c到高潮小说 | 久久久久久久黄色片 | 91精品国产92久久久久 | 日韩毛片在线看 | 国产女厕一区二区三区在线视 | 成熟女人特级毛片www免费 | 久久久三级免费电影 | 日韩视频区 | av免费在线观看不卡 | 欧美重口另类videos人妖 | 在线播放免费播放av片 | 亚州精品天堂中文字幕 | 欧美成年视频 | 嗯~啊~用力~高h | 91美女视频在线观看 | 毛片一区二区三区 | 国产精品视频免费网站 | 视频一区二区中文字幕 | 日韩中文字幕一区二区三区 | 国产在线观看一区二区三区 | 国产精品久久久久久婷婷天堂 | 亚洲免费网站 | 4480午夜| 国产精品免费一区二区三区四区 | 亚洲第一成av人网站懂色 | 狠狠干狠狠操 | 日韩一级毛毛片 |