將16bit的資料高低位對調的方式

2021-10-09 08:12:11 字數 1812 閱讀 1290

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

小端模式:是指資料的高位元組儲存在記憶體的高位址中,而資料的低位元組儲存在記憶體的低位址中,這種儲存模式將位址的高低和資料位權有效地結合起來,高位址部分權值高,低位址部分權值低

為什麼會有大小端模式之分呢?

這是因為在計算機系統中,我們是以位元組為單位的,每個位址單元都對應著乙個位元組,乙個位元組為 8bit。但是在c語言中除了8bit的char之外,還有16bit的short型,32bit的long型(要看具體的編譯器),另外,對於位數大於 8位的處理器,例如16位或者32位的處理器,由於暫存器寬度大於乙個位元組,那麼必然存在著乙個如何將多個位元組安排的問題。因此就導致了大端儲存模式和小端儲存模式。

例如乙個16bit的short型x,在記憶體中的位址為0x0010,x的值為0x1122,那麼0x11為高位元組,0x22為低位元組。對於 大端模式,就將0x11放在低位址中,即0x0010中,0x22放在高位址中,即0x0011中。小端模式,剛好相反。我們常用的x86結構是小端模式,而keil c51則為大端模式。很多的arm,dsp都為小端模式。有些arm處理器還可以隨時在程式中(在arm cortex 系列使用rev、rev16、revsh指令 )進行大小端的切換。

資料格式:16位的無符號整數

接收端使用unsigned short接收16位的無符號整型資料。

任務:將高8位與低8位的資料對調位置

使用此函式需要宣告#pragma comment(lib,"ws2_32.lib")否者會報錯:

除錯結果:

獲取低8位和高8位的資料,原低位8位數*256+高8位在進行計算。

將乙個int型的高低位反轉

乙個int型資料一般占用4位元組,即32位。實現乙個int型的高低位反轉就是按乙個位元組一次取出其值暫時儲存到乙個unsigned char陣列中,然後按照相反的方向將資料的值寫回int型資料中。c 實現如下 include include intmain char p char data prin...

乙個將32位數字高低位互換的小程式

在 c和指標 這本書上看到有一道題要求將乙個32位資料高低位互換,提示用reverse.c做。網上大概看了一下沒有找到比較合適的答案,嘗試自己動手寫了一下。利用遞迴,將餘數左移,返回結果。include unsigned int reverse unsigned int value int main...

SpringMVC將資料放到作用域中的方式

一 將資料放到request域中 方式一 request.setattribute message 我愛你們 在jsp頁面中通過el表示式獲取 輸出 我愛你們 方式二 modelandview modelandview new modelandview modelandview.setview us...