C语言中的“高位字节”和“低位字节”是什么意思? C语言中的高位字节和低位字节是什么意思?
C\u8bed\u8a00\u4e2d\u7684\u9ad8\u4f4d\u5b57\u8282\u548c\u4f4e\u4f4d\u5b57\u8282\u662f\u4ec0\u4e48\u610f\u601d?\u6bd4\u5982\uff1a\u4e00\u4e2a\u5b57\u8282=8bit\u8ba1\u7b97\u673a\u4e2d\u752816\u8868\u793a\u4e00\u4e2a\u6570\uff0c\u6bd4\u59820001 0001 1001 0001 \uff1b 0001 0001\u5c31\u4e3a\u9ad8\u5b57\u8282\uff0c1001 0001\u4e3a\u4f4e\u5b57\u8282\u30020001 0001 1001 0001B\uff08\u6216\u80051191H\uff0911H 91H\u8bf4\u901a\u4fd7\u70b9\uff0c\u5c31\u662f\u628a\u4e00\u4e2a\u6570\u7528\u7f16\u7801\u8868\u793a\u51fa\u6765(\u4e00\u822c\u5341\u516d\u8fdb\u5236\u6216\u4e8c\u8fdb\u5236\uff09\uff0c\u5de6\u8fb9\u7684\u4e00\u534a\u6570\u4e3a\u9ad8\uff0c\u53f3\u8fb9\u4e00\u534a\u6570\u4e3a\u4f4e\u3002
C\u8bed\u8a00\u662f\u4e00\u95e8\u901a\u7528\u8ba1\u7b97\u673a\u7f16\u7a0b\u8bed\u8a00\uff0c\u5e94\u7528\u5e7f\u6cdb\u3002C\u8bed\u8a00\u7684\u8bbe\u8ba1\u76ee\u6807\u662f\u63d0\u4f9b\u4e00\u79cd\u80fd\u4ee5\u7b80\u6613\u7684\u65b9\u5f0f\u7f16\u8bd1\u3001\u5904\u7406\u4f4e\u7ea7\u5b58\u50a8\u5668\u3001\u4ea7\u751f\u5c11\u91cf\u7684\u673a\u5668\u7801\u4ee5\u53ca\u4e0d\u9700\u8981\u4efb\u4f55\u8fd0\u884c\u73af\u5883\u652f\u6301\u4fbf\u80fd\u8fd0\u884c\u7684\u7f16\u7a0b\u8bed\u8a00\u3002
\u6bd4\u5982\uff1a\u4e00\u4e2a\u5b57\u8282=8bit\u8ba1\u7b97\u673a\u4e2d\u752816\u8868\u793a\u4e00\u4e2a\u6570\uff0c\u6bd4\u59820001 0001 1001 0001 \uff1b 0001 0001\u5c31\u4e3a\u9ad8\u5b57\u8282\uff0c1001 0001\u4e3a\u4f4e\u5b57\u8282\u30020001 0001 1001 0001B\uff08\u6216\u80051191H\uff0911H 91H\u8bf4\u901a\u4fd7\u70b9\uff0c\u5c31\u662f\u628a\u4e00\u4e2a\u6570\u7528\u7f16\u7801\u8868\u793a\u51fa\u6765(\u4e00\u822c\u5341\u516d\u8fdb\u5236\u6216\u4e8c\u8fdb\u5236\uff09\uff0c\u5de6\u8fb9\u7684\u4e00\u534a\u6570\u4e3a\u9ad8\uff0c\u53f3\u8fb9\u4e00\u534a\u6570\u4e3a\u4f4e\u3002
C\u8bed\u8a00\u662f\u4e00\u95e8\u901a\u7528\u8ba1\u7b97\u673a\u7f16\u7a0b\u8bed\u8a00\uff0c\u5e94\u7528\u5e7f\u6cdb\u3002C\u8bed\u8a00\u7684\u8bbe\u8ba1\u76ee\u6807\u662f\u63d0\u4f9b\u4e00\u79cd\u80fd\u4ee5\u7b80\u6613\u7684\u65b9\u5f0f\u7f16\u8bd1\u3001\u5904\u7406\u4f4e\u7ea7\u5b58\u50a8\u5668\u3001\u4ea7\u751f\u5c11\u91cf\u7684\u673a\u5668\u7801\u4ee5\u53ca\u4e0d\u9700\u8981\u4efb\u4f55\u8fd0\u884c\u73af\u5883\u652f\u6301\u4fbf\u80fd\u8fd0\u884c\u7684\u7f16\u7a0b\u8bed\u8a00\u3002
通常我们从最高有效位(most significant digit)开始自左向右书写一个数字。在理解有效位这个概念时,可以想象一下你的支票数额的第一位增加1和最后一位增加1之间的巨大区别,前者肯定会让你喜出望外。
计算机内存中一个字节的位相当于二进制数的位,这意味着最低有效位表示1,倒数第二个有效位表示2×1或2,倒数第三个有效位表示2×2×1或4,依此类推。如果用内存中的两个字节表示一个16位的数,那么其中的一个字节将存放最低的8位有效位,而另一个字节将存放最高的8位有效位,见图10.5。存放最低的8位有效位的字节被称为最低有效位字节或低位字节,而存放最高的8位有效位的字节被称为最高有效位字节或高位字节。
高位字节 低位字节
↓--------------------------↓ ↓---------------------------↓
15 14 13 12 11 10 9. 8. 7. 6. 5. 4. 3. 2. 1. 0.
通常我们从最高有效位(most significant digit)开始自左向右书写一个数字。在理解有效位这个概念时,可以想象一下你的支票数额的第一位增加1和最后一位增加1之间的巨大区别,前者肯定会让你喜出望外。
计算机内存中一个字节的位相当于二进制数的位,这意味着最低有效位表示1,倒数第二个有效位表示2×1或2,倒数第三个有效位表示2×2×1或4,依此类推。如果用内存中的两个字节表示一个16位的数,那么其中的一个字节将存放最低的8位有效位,而另一个字节将存放最高的8位有效位,见图10.5。存放最低的8位有效位的字节被称为最低有效位字节或低位字节,而存放最高的8位有效位的字节被称为最高有效位字节或高位字节。
高位字节 低位字节
↓--------------------------↓ ↓---------------------------↓
15 14 13 12 11 10 9. 8. 7. 6. 5. 4. 3. 2. 1. 0.
图 10.5 双字节整数中的位
绛旓細鎵璋撻珮浣鍜屼綆浣鏄汉鍐欐暟鎹椂鐨勮蹇碉紝姣斿0x1234锛屽湪鍐呭瓨涓寜瀛楄妭瀛樻斁鐨勯『搴忔槸0x34,0x12 鎵浠ヤ綘杞崲鎸夊瓧鑺傚瓨鏀剧殑锛0x12,0x34锛屼細寰楀埌0x3412杩欐牱鐨勫彇鍊硷紝杩欏彨灏忕妯″紡瀛樺偍锛屽氨鏄綋鏁版嵁瓒呰繃1瀛楄妭鏃讹紝浣庝綅瀛楄妭瀛樻斁鍦ㄥ墠闈(鍦板潃灏)锛楂樹綅瀛楄妭鍦ㄥ悗(鍦板潃楂)
绛旓細楂樹綆浣鏄粰浜虹湅鐨勶紝涔熷氨鏄杩欐槸涓涓汉涓虹殑瑙勫畾銆傛瘮濡0x1234, 鍗2瀛楄妭16浣嶏紝涓轰簡鏂逛究鍙欒堪锛屽氨瑙勫畾杩16浣嶅啓鎴愪簩杩涘埗褰㈠紡鏃讹紝浠庡彸鍚戝乏鍒嗗埆涓虹0浣嶏紝绗1浣,鈥︹︼紝绗15浣嶃傝繖鏍0~7鐨勪竴涓瓧鑺傦紝缂栧彿鐨勬暟瀛楄緝灏忥紝灏辫绉颁负浣庡叓浣嶏紝鍗充綆瀛楄妭锛屽搴旂殑灏辨槸楂樺叓浣嶏紝涔熷氨鏄珮瀛楄妭銆傚鏋滄渶寮濮嬪畾涔夌殑浜...
绛旓細浠庤岄伩鍏嶄簡鏁版嵁瑙f瀽閿欒銆傚湪缂栫▼杩囩▼涓紝鎴戜滑鍙互浣跨敤鐗瑰畾鐨勭紪绋嬭瑷鍔熻兘鎴栧簱鏉ュ鐞瀛楄妭搴忛棶棰樸備緥濡傦紝鍦C璇█涓锛屽彲浠ヤ娇鐢╜htonl锛堬級`鍜宍ntohl锛堬級`鍑芥暟灏嗕富鏈哄瓧鑺傚簭杞崲涓虹綉缁滃瓧鑺傚簭锛屼互鍙婂皢缃戠粶瀛楄妭搴忚浆鎹负涓绘満瀛楄妭搴忋傚湪Python涓紝鍙互浣跨敤`struct`妯″潡鏉ュ疄鐜扮浉鍚岀殑鍔熻兘銆
绛旓細濡傦細涓涓暟0x12345678瀛樻斁鍦ㄤ竴涓4瀛楄妭绌洪棿閲 鍦ㄨ绠楁満绯荤粺涓紝鎴戜滑鏄互瀛楄妭涓哄崟浣嶅瓨鏀炬暟鎹殑锛屾瘡涓湴鍧鍗曞厓閮藉搴旂潃涓涓瓧鑺傦紝涓涓瓧鑺備负8bit銆備絾鍦C璇█涓瀛樺湪涓嶅悓鐨勬暟鎹被鍨嬶紝鍗犵敤鐨勫瓧鑺鏁颁篃鍚勪笉鐩稿悓锛岄偅涔堝氨瀛樺湪鎬庢牱瀛樻斁澶氫釜瀛楄妭鐨勯棶棰橈紝鍥犳灏卞嚭鐜颁簡澶х瀛樺偍妯″紡鍜屽皬绔...
绛旓細2涓瀛楄妭short int 楂樹綆浣杞寲:short int y=0x7f21;y = ( (y & 0xff00) >> 8) | ( (y & 0x00ff ) << 8);printf("%#x",y);--- 涔熷彲浠ュ埄鐢 union union B2 { short int i;unsigned char c[2];// 銆傘傘備换鎰忎袱瀛楄妭绫诲瀷 } ;union B2 x;unsigned char tmp;x.i=0x...
绛旓細浼拌鏄粠鏌愪竴鍦板潃璇诲彇瀛楄妭鏁版嵁銆侶琛ㄧず楂樹綅瀛楄妭锛孡鏄浣庝綅瀛楄妭銆*256鐩稿綋浜庡乏绉8浣嶏紝杩欐牱涓や釜瀛楄妭鍙互鍚堝苟涓轰竴涓瓧
绛旓細涓 x 鐨勫洓涓瓧鑺傚皢琚瓨鍌ㄥ湪瀛樺偍鍣ㄧ殑 0x100, 0x101, 0x102, 0x103 浣嶇疆銆傚湪璁$畻鏈轰腑涓鑸瀛楄妭搴忓垎涓轰袱绫伙細 Big-Endian 锛堝ぇ绔瓧鑺傚簭锛 鍜 Little-Endian 銆 a) Little-Endian 楂樹綅瀛楄妭鍦ㄥ墠锛浣庝綅瀛楄妭鍦ㄥ悗銆 b) Big-Endian 浣庝綅瀛楄妭鍦ㄥ墠锛岄珮浣嶅瓧鑺傚湪鍚庛 c) 缃戠粶瀛楄妭搴忥細TCP/IP...
绛旓細鎶8浣嶄簩杩涘埗璧嬪肩粰16浣嶄簩杩涘埗鐨勬椂鍊欙紝瑕佽繘琛楂樹綅鎵╁睍銆備緥濡傛妸0xxxxxxx璧嬪肩粰16浣嶅彉閲忕殑缁撴灉鏄00000000 0xxxxxxx 鍐嶅叆鎶1xxxxxxx璧嬪肩粰16浣嶅彉閲忕殑缁撴灉鏄11111111 1xxxxxxx 鎵浠ワ紝浣犵湅鐪嬩笅闈㈢殑绋嬪簭锛歮ain(){ char c='\376';int i=c;printf("c=%d,i=%d\n",c,i);} 鍏佽鐨勭粨鏋滄槸锛歝=-2,i=-2...
绛旓細浣跨敤鐨勬槸GB鐮侊紝鍒嗕负涓绾у瓧浜岀骇瀛梸~~鎬绘暟涓6763锛屼笉鍦ㄩ偅涓寖鍥村唴鐤氭樉绀轰笉鍑
绛旓細le鏄痩ittel endian鐨勭畝绉帮紝鍗冲皬绔備笌涔嬪搴旂殑鏄痓e(big endian)锛屽嵆澶х銆傚ぇ绔皬绔槸鎸囦竴涓瀛楄妭鍙橀噺鍦ㄥ唴瀛樹腑瀛樺偍鏂瑰紡鐨勫尯鍒1 le銆傚皬绔幆澧冧腑锛屽瀛楄妭鍦ㄥ唴瀛樹腑锛楂樹綅瀛楄妭鏁版嵁鍌ㄥ瓨鍦浣庝綅鍦板潃涓婏紝浣庝綅瀛楄妭鏁版嵁鍌ㄥ瓨鍦ㄩ珮浣嶅湴鍧涓娿2 be.澶х鐜涓紝澶氬瓧鑺傚湪鍐呭瓨涓紝楂樹綅瀛楄妭鏁版嵁鍌ㄥ瓨鍦ㄩ珮浣嶅湴鍧涓婏紝浣庝綅...