1. 程式人生 > >c語言 之大端小端儲存問題

c語言 之大端小端儲存問題

我們都知道資料在計算機中的儲存是以補碼形式儲存的。在計算機中,如果資料的高位元組內容放在高地址處低位元組內容放在低地址處,我們稱它為小端位元組序;相反,如果資料的高位元組內容放在底地址處,低位元組內容放在高地址處,我們稱它為大端位元組序。

例如: int n=1;

它的原碼,反碼,補碼都是 00000000 00000000 00000000 00000001

它在計算機中的小端儲存位元組序為  00 00 00 01

                          大端儲存位元組序為 01 00 00 00

但是我們怎麼知道一個數在計算機中是以大端位元組序列儲存還是小端位元組序儲存的呢?下面我給出兩種方法來求出資料在計算機中的儲存方式,程式碼如下:

#include <stdio.h>
int main()
{
	int num = 1;
	char *p = (char *)&num;
	if (*p == 0)
		printf("小端\n");
	else 
		printf("大端\n");
	system("pause");
	return 0;
}

除了這種方式,我們還可以用共用體的方式解決這個問題

程式碼如下:

#include <stdio.h>
union UN
{
	char c;
	int i;
}un;
int main()
{
	un.i = 1;
	if (un.c ==0)
		printf("小端\n");
	else 
		printf("大端\n");
	system("pause");
	return 0;
}



相關推薦

c語言 大端儲存問題

我們都知道資料在計算機中的儲存是以補碼形式儲存的。在計算機中,如果資料的高位元組內容放在高地址處,低位元組內容放在低地址處,我們稱它為小端位元組序;相反,如果資料的高位元組內容放在底地址處,低位元組內

C語言學習筆記--模式和大端模式

一、概念:     大端(儲存)模式:是指一個數據的低位位元組序的內容放在高地址處,高位位元組序存的內容放在低地址處。     小端(儲存)模式:是指一個數據的低位位元組序內容存放在低地址處,高位位元組序的內容存放在高地址處。 二、程式碼 #include

嵌入式C語言資料大小問題

筆者在進行程式設計或者移植的時候,經常遇到資料高低位元組不一致的問題,也就是資料大小端問題。本帖子詳細討論一下大小端。大端模式,是指資料的高位元組儲存在記憶體的低地址中,而資料的低位元組儲存在記憶體的高地址中,這樣的儲存模式有點兒類似於把資料當作字串順序處理:地址由小向大增加

大端儲存儲存及基於c語言的測試函式

大端模式是什麼?小端模式又是什麼?對系統哪些方面有影響?又如何來檢視我的電腦到底是大端還是小端呢?這些問題在文中都將獲得解決,一起來看看吧。首先我們來介紹一下概念:大端模式(Big_endian):字資料的高位元組儲存在低地址中,而字資料的低位元組儲存在高地址中。如下圖。小端

...續上文(一個萌新的C語言旅)

double 調用函數 小數 一位 技術 類型 說過 fff 兩個 我們繼續上次沒介紹完的繼續講:     下面我們說一下二進制,二進制是計算技術中廣泛采用的一種 數制。 二進制數據是用0和1兩個 數碼來表示的數。它的基數為2,進位規則是“逢二進一”。那麽二進制怎麽轉化為十

嵌入式C語言深度解讀C語言儲存域,作用域,生命週期,連結屬性

***儲存類:    就是儲存型別,描述,C語言變數的儲存地址。    記憶體的管理方式:棧  堆  資料段  bss段  .text段。    一個變數的儲存型別就是描述這個變數儲存在何種記憶體段之

C語言裡的坑-方法內的常量和變數

char* fun1() {     char *a;     a = "c語言的那些小坑";     return a; } char* fun2() {     char a[128];     sprintf(a, "c語言的那些小坑");     return a;

C語言網路程式設計(伺服器和客戶

1、 套接字:源IP地址和目的IP地址以及源埠號和目的埠號的組合稱為套接字。其用於標識客戶端請求的伺服器和服務。 常用的TCP/IP協議的3種套接字型別如下所示。 (1)流套接字(SOCK_STREAM): 流套接字用於提供面向連線、可靠的資料傳輸服務。該服務將保證資料能夠實現無差錯、無重複傳送,並按順序接

判斷一個機器使用的是大端儲存還是儲存

本文節選自《UNIX網路程式設計》。 考慮一個16位整數,它由兩個位元組組成。記憶體中儲存這兩個位元組有兩種方法:一種是將低序位元組儲存在起始地址,這稱為小端(little-endian)位元組序;另一種方法是將高序位元組儲存在起始地址,這稱為大端(big-endian)位

大端儲存儲存,網路位元組序

一、大端、小端 "大端"和"小端"表示多位元組值的哪一端儲存在該值的起始地址處;小端儲存在起始地址處,即是小端位元組序;大端儲存在起始地址處,即是大端位元組序; 或者說: 1.小端法(Little-Endian)就是低位位元組排放在記憶體的低地址端(即該值的起始地址),高

大端儲存格式與儲存格式

1.大端儲存格式即字資料的高位元組儲存在低地址中,而字資料的低位元組則存放在高地址中。與大端儲存格式相反,在小端儲存格式中,低地址中存放的是字資料的低位元組,高地址存放的是字資料的高位元組。 例如,3

大端與數字的二進位制儲存

部分1:大端小端概念摘自:https://jocent.me/2017/07/25/big-little-endian.html計算機系統中記憶體是以位元組為單位進行編址的,每個地址單元都唯一的對應著1個位元組(8 bit)。這可以應對char型別資料的儲存要求,因為char

C語言大小問題

大小端問題 在我們傳送資料的時候,我們首先要確定的是大端還是小端模式來進行的,接收方接收資料時必須知道資料傳輸的是大端機還是小端機,這個才能正確地讀取和儲存資料,否則就會出現問題。 一個三十二位的二進位制程式中儲存有兩種方式, 1:資料的低位儲存在記憶體的高地址

資料儲存大端的區別

大端模式,是指資料的高位元組儲存在記憶體的低地址中,而資料的低位元組儲存在記憶體的高地址中,這樣的儲存模式有點兒類似於把資料當作字串順序處理:地址由小向大增加,而資料從高位往低位放;這和我們的閱讀習慣一致。小端模式,是指資料的高位元組儲存在記憶體的高地址中,而資料的低位元組儲

C語言的那些祕密動態陣列

摘要的重要性是不言而喻的,每次發文章我都很糾結如何寫出一個有特色的摘要來,能夠以最為簡短的文字向讀者描述出我所要表達的東西。但是常常出現的問題是,摘要寫得太簡短了,讀者看了不清楚文章究竟要講啥;摘要寫得稍微長點的話自然能夠描述清楚所要表達的東西,但是卻也出現了另外一個問題,就

大端模式簡單介紹 以及三種檢測大小儲存的方法

大端模式:是指資料的高位元組儲存在記憶體的低地址中,而資料的低位元組儲存在記憶體的高地址端。 小端模式,是指資料的高位元組儲存在記憶體的高地址中,低位位元組儲存在在記憶體的低地址端。 比

C語言數組

分時 一維數組 分布 效率 常量指針 指針 div pre 數組指針 六、數組: 6.1、大部分時間:數組名 == 常量指針。 6.2、 int array[10] = {1,2,3,4,5}; int *parray = array; //數組的首元素地址 int *p

C語言使用vi編寫C語言

wal shell命令 art return 當前 更多 std 編譯 常用 1. 首先進入shell命令界面,輸入: "vi hello.c" 就進入了vi編輯界面,鍵入i進入編輯狀態。可輸入程序如下: #include <stdio.h&g

C語言如何讓vim編輯器永久顯示行號

語言 打開 默認 linux環境 linu 顯示 命令行模式 c語言 mrc 在Linux環境下的編輯器有vi、vim、gedit等等。 進入這些編輯器之後,為了方便我們需要編輯器顯示出當前的行號,可偏偏編輯器默認是不會顯示行號的。 我們有二種辦法可以解決: 第一

C語言運算符和條件結構

比較運算 第三名 user 石頭 年齡 pan 註意 break -1 表達式:是有操作數和運算符組成的。 操作數:常量、變量、子表達式 X=(x+2)*(y-2); 運算符: 賦值運算符:= 。其作用是做賦值運算,將等號後邊的值賦值給等號前邊的。 復合賦值運算符: +=