1. 程式人生 > >判斷系統中的CPU 是Little endian 還是Big endian 模式

判斷系統中的CPU 是Little endian 還是Big endian 模式

      Little endian 和Big endian 是CPU 存放資料的兩種不同順序。對於整型、長整型等資料型別,Big endian 認為第一個位元組是最高位位元組(按照從低地址到高地址的順序存放資料的高位位元組到低位位元組);而Little endian 則相反,它認為第一個位元組是最低位位元組(按照從低地址到高地址的順序存放資料的低位位元組到高位位元組).

      一般來說,x86 系列CPU 都是little-endian 的位元組序,PowerPC 通常是Big endian,還有的CPU 能通過跳線來設定CPU 工作於Little endian 還是Big endian 模式.

      通過將一個位元組(CHAR/BYTE 型別)的資料和一個整型資料存放於同樣的記憶體開始地址,然後讀取整型資料,分析CHAR/BYTE 資料在整型資料的高位還是低位來判斷CPU 工作於Little endian 還是Big endian 模式.

程式碼如下:

#include <iostream>
using namespace std;
typedef unsigned char BYTE;

int main()
{
	unsigned int num = 0;
	unsigned int* p  = &num;

	*(BYTE *)p = 0xff;
	if(num == 0xff)
	   cout<<"The endian of cpu is little"<<endl;
	else //num == 0xff000000
	   cout<<"The endian of cpu is big"<<endl;

	return 0;
}

       union 的成員本身就被存放在相同的記憶體空間(共享記憶體),因此,我們可以將一個CHAR/BYTE 資料和一個整型資料同時作為一個union 的成員.

程式碼如下:

#include <iostream>
using namespace std;
typedef unsigned char BYTE;

int main()
{
   union
    {
      int a;
      char b;
    } un;

   un.a = 1;
   if(un.b == 1)
      cout<<"The endian of cpu is little"<<endl;
   else
      cout<<"The endian of cpu is big"<<endl;

   return 0;

}

相關推薦

判斷系統CPULittle endian 還是Big endian 模式

      Little endian 和Big endian 是CPU 存放資料的兩種不同順序。對於整型、長整型等資料型別,Big endian 認為第一個位元組是最高位位元組(按照從低地址到高地址的順序存放資料的高位位元組到低位位元組);而Little endian 則相

判斷計算機位元組儲存順序的方法(Big-endianLittle-endian)

little   endian和big   endian是表示計算機位元組順序的兩種格式,所謂的位元組順序指的是長度跨越多個位元組的資料的存放形式.                 假設從地址0x00000000開始的一個字中儲存有資料0x1234abcd,那麼在兩種不同的

在VMware Workstation Pro 虛擬系統CPU占用過高的原因?

vmware workstation pro cpu 分析原因:在超線程單處理器主機上,采用虛擬 SMP 的虛擬機可能無法達到正常性能水平。即便在多處理器主機上,如果您運行了多個工作負載,導致整體 CPU 資源需求超過物理資源極限,虛擬機的性能也會受到影響。 在配置虛擬機處理器的時候

對整數和浮點數儲存,little-endianbig-endian位元組順序,以及位運算的一點回顧

對問題的一些理解 1.位運算及其相關運算 位運算 &,|,^,~,<<,>>,+,! 用 異或^ 可以交換兩個變數,不需要中間變數 a = a ^ b;   // a = 0000 1111 b = b ^ a;   // b = 0000

編寫一個程式,判斷系統big endian,還是little endian

// Endian_1.cpp : 定義控制檯應用程式的入口點。 // #include "stdafx.h" #include <stdlib.h> #include <st

判斷CPU模式是大端還是小段(big-Endianlittle-Endian

一、大端模式和小端模式的起源         關於大端小端名詞的由來,有一個有趣的故事,來自於Jonathan Swift的《格利佛遊記》:Lilliput和Blefuscu這兩個強國在過去的36個月中一直在苦戰。戰爭的原因:大家都知道,吃雞蛋的時候,原始的方法是打破雞蛋較

推斷CPU 是小端存儲(Little endian)還是大端存儲(Big endian模式

art div 版本 ack 一個 fine name clas char 第一個版本號: //return true in big-endian machines bool check_big_endian1() { int a = 0; int *p = &a

判斷機器是big-endianlittle-endian

訪問 都是 進制 內容 打印 應該 變量 little code 聯合體union和大小端(big-endian、little-endian):下邊示範了一種用途,代表四個含義的四個變量,但是可以用一個int來操作,直接int賦值,無論內存訪問(指針大小的整數倍,訪問才有

一個判斷機器位元組序(big endian/little endian)的小程式

大端(Big Endian)與小端 (Little Endian) Byte Endian是指位元組在記憶體中的組織,所以也稱它為Byte Ordering。      對於資料中跨越多個位

大端和小端(big endian little endian

讀寫 pue 處理器 bsp 網絡 做的 tdi har power 一、大端和小端的問題 對於整型、長整型等數據類型,Big endian 認為第一個字節是最高位字節(按照從低地址到高地址的順序存放數據的高位字節到低位字節);而 Little endian 則相反,它認為

大端和小端(Big endian and Little endian

tro big ttl class erp 順序 通過 網絡 rpc 1.大端和小端的問題 ? 對於整型、長整型等數據類型,Big endian 人為第一個字節是最高位字節(按照從低地址到高地址的順序存放數據的高位字節到低位字節),而 Little endian 則相反,它

如何在Linux系統檢視CPU系統核數、執行緒數等資訊

檢視系統的CPU資訊時,需要注意的引數是:系統中有幾顆CPU,每顆CPU中有幾顆核心,每個CPU有幾個執行緒。 通過/proc/cpuinfo中可以看到系統中總計有幾顆CPU,每顆CPU有幾個核心,系統總計有多少CPU執行緒。 引數的意義: model name:每顆CPU的型號。  

徹底搞懂字元編碼(unicode,mbcs,utf-8,utf-16,utf-32,big endian,little endian...)

最近有一些朋友常問我一些亂碼的問題,和他們交流過程中,發現這個編碼的相關知識還真是雜亂不堪,不少人對一些 知識理解似乎也有些偏差,網上百度,google的內容,也有不少以訛傳訛,根本就是錯誤的(例如說 unicode編碼是兩 個位元組),各種軟體讓你選擇編碼的時候,常

位元組順序:高位優先(big-endian)和低位優先(little-endian)

@[TOC](位元組順序:高位優先(big-endian)和低位優先(little-endian)) 網路位元組序: MSB 高位元組前存法 Most Significant Bit (Big Edian) 主機位元組序: LSB 低位元組前存法 Lest

位元組序:Big EndianLittle Endian

最近碰到了node.js中的buf.readUInt16LE(offset[, noAssert])方法:         根據指定的偏移量,使用特殊的 endian 位元組序格式讀取一個無符號 16 位整數。若引數 noAssert 為 true 將不會驗證 offset

Linux系統如何檢視CPU和GPU佔用率

對於當前採用GPU進行視訊編解碼的方式來說,我們需要經常檢視GPU佔用率,當然也會耗費一部分CPU資源,以下給大家介紹以下GPU和CPU檢視方式 (1)GPU佔用檢視: xShell登入某個節點,進入cd /opt/intel/mediasdk/tools/metrics

位元組序(Endian),大端(Big-Endian),小端(Little-Endian

在各種計算機體系結構中,對於位元組、字等的儲存機制有所不同,因而引發了計算機通訊領域中一個很重要的問題,即通訊雙方交流的資訊單元(位元、位元組、字、雙字等等)應該以什麼樣的順序進行傳送。如果不達成一致的規則,通訊雙方將無法進行正確的編/譯碼從而導致通訊失敗。目前在各種體系的計算機中通常採用的位

Big EndianLittle Endian

  談到位元組序的問題,必然牽涉到兩大CPU派系。那就是Motorola的PowerPC系列CPU和Intel的x86系列CPU。PowerPC系列採用big endian方式儲存資料,而x86系列則採用little endian方式儲存資料。那麼究竟什麼是big

大端模式big-endian)與小端模式little-endian

參考自 大端模式與小端模式 大端模式是指資料的低位儲存在記憶體的高地址中,而資料的高位儲存在記憶體的低地址中. 小端模式是指資料的低位儲存在記憶體的低地址中,而資料的高位儲存在記憶體的高地址中。 大小端模式的由來 在計算機系統中,我們是以位元組為單位

關於大端模式big-endian)與小端模式little-endian

大端模式和小端模式討論的是資料的多個位元組在記憶體中如何排列的問題。 大端模式(big-endian):資料的高位儲存在低地址,資料的低位儲存在高地址。 小端模式(little-endian):資料的高位儲存在高地址,資料的低位儲存在低地址。 下面用int