最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語言中大小端問題實例探索解決方法

 更新時間:2023年02月14日 10:33:23   作者:故里?9513  
這篇文章主要介紹了C語言中大小端問題實例,總的來說這并不是一道難題,那為什么要拿出這道題介紹?拿出這道題真正想要傳達的是解題的思路,以及不斷優(yōu)化探尋最優(yōu)解的過程。希望通過這道題能給你帶來一種解題優(yōu)化的思路

一、什么是大小端

大端模式:就是高位字節(jié)數(shù)據(jù)存放在內存的低地址端,低位字節(jié)數(shù)據(jù)存放在內存的高地址端。

小端模式:就是低位字節(jié)數(shù)據(jù)存放在內存的低地址端,高位字節(jié)數(shù)據(jù)存放在內存的高地址端。

【大端】和【小端】表示多字節(jié)值的哪一端存儲在該值的起始地址處;

二、舉個例子

#include<stdio.h>
int main()
{
	int a = 1;
	return 0;
}

調試運行一下,打開內存監(jiān)視窗口,發(fā)現(xiàn)定義的這個int類型的變量a(int a = 1)為4個字節(jié),轉換成bit是32位,所以電腦中存儲的變量a為二進制表示00000000 00000000 00000000 00000001,vs2019中的監(jiān)視此時表示的16進制,也就是0x00 00 00 01。但是看看VS2019里面所顯示的是不是就有點懵了,a這個變量值是1 ,在內存中存儲應該是0x 00 00 00 01,為什么編譯器給出的卻是0x 01 00 00 00呢?提到這個問題就要說說大小端問題了??????!?。。?/p>

三、大小端演示

按照不同模式將a保存在內存中,情況如下:

補充:結合高位字節(jié),低位字節(jié)與大小端進行比較理解

當向內存中存放一個數(shù)據(jù)的時候,會從內存的高地址開始往低地址的方向放這個數(shù)據(jù),但是放數(shù)據(jù)的時候就是按照我們人為的這種認識往里面存放嗎?比如向內存中放一個數(shù)據(jù)0x11 22 33 44,計算機就是把這個數(shù)字送到內存后,這個時候內存中數(shù)據(jù)放的樣式就是我們輸入的這樣嗎?其實真正向內存存儲的時候,由于內存選擇了不同的兩種(大端、小端)存儲模式,內部真正存放的樣式就跟我們想的不一樣了。但是人們聰明啊,把自己認為的這種順序規(guī)定了是從高位字節(jié)到低位字節(jié)的。即一個確定的數(shù)字,從左往右,就是從高位字節(jié)到低位字節(jié),可以說這是一種一致認為的習慣說法。

這樣區(qū)分大小端就是按照字節(jié)位與地址大小比較來確定。

四、解釋"二"中舉例的問題

那么剛剛VS2019中的問題就可以講的通了,在VS2019中,數(shù)據(jù)往內存中存放是由高地址到低地址的,由于存儲方式是小端存儲模式,所以先往里放高位字節(jié)的內容,即對于0x12345678來說,從高地址往低地址存放時,放入順序就如圖a所示。然后由于操作系統(tǒng)在訪問內存數(shù)據(jù)時是從低地址向高地址的順序進行的,所以最后顯示的存放就如圖b所示

五、怎么判斷是大端還是小端

int check_sys()
{
	int a = 1;
	return *(char*)&a;
}
int main()
{
	int ret = check_sys();
	if( ret == 1 )
		printf("小端\n");
	else
		printf("大端\n");
	return 0;
}

六、一個題目

在小端機器中,下面代碼輸出的結果是:( )

A.00223344
B.0
C.11223300
D.112233

#include <stdio.h>
int main()
{
	int a = 0x11223344;
    char *pc = (char*)&a;
    *pc = 0;
    printf("%x\n", a);
    return 0;
}

解析:

假設,a變量的地址為0x64,則a變量在內存中的模型為:

0x64| 44 |

0x65| 33 |

0x66| 22 |

0x67| 11 |

char*類型的指針變量pc指向只能指向字符類型的空間,如果是非char類型的空間,必須要將該空間的地址強轉為char*類型。

char *pc = (char*)&a; pc實際指向的是整形變量a的空間,即pc的內容為0x64,即44,

*pc=0,即將44位置中內容改為0,修改完成之后,a中內容為:0x11223300

因此:選擇C

到此這篇關于C語言中大小端問題實例探索解決方法的文章就介紹到這了,更多相關C語言大小端內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • C++函數(shù)指針+對象指針+this指針+指向類靜態(tài)和非靜態(tài)成員的指針

    C++函數(shù)指針+對象指針+this指針+指向類靜態(tài)和非靜態(tài)成員的指針

    這篇文章主要介紹了C++函數(shù)指針+對象指針+this指針+指向類靜態(tài)和非靜態(tài)成員的指針,函數(shù)指針定義和賦值的語法指其中數(shù)據(jù)類型代表指向函數(shù)的返回類型,形參表為指向函數(shù)的形參表,更多相關資料需要的朋友可以參考一下下面文章內容
    2022-03-03
  • VC實現(xiàn)給窗體的一個按鈕添加事件的方法

    VC實現(xiàn)給窗體的一個按鈕添加事件的方法

    這篇文章主要介紹了VC實現(xiàn)給窗體的一個按鈕添加事件的方法,通過三個簡單步驟實現(xiàn)窗體按鈕添加事件,需要的朋友可以參考下
    2015-05-05
  • C++中對象的動態(tài)建立與釋放詳解及其作用介紹

    C++中對象的動態(tài)建立與釋放詳解及其作用介紹

    這篇文章主要介紹了C++中對象的動態(tài)建立與釋放詳解及其作用介紹,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-09-09
  • c語言中unsigned修飾符的使用

    c語言中unsigned修飾符的使用

    在C語言中,unsigned是一種無符號整數(shù)修飾符,本文主要介紹了c語言中unsigned修飾符的使用,具有一定的參考價值,感興趣的可以了解一下
    2023-11-11
  • C++ 模擬實現(xiàn)list(迭代器)實現(xiàn)代碼

    C++ 模擬實現(xiàn)list(迭代器)實現(xiàn)代碼

    這篇文章主要介紹了C++ 模擬實現(xiàn)list(迭代器)實現(xiàn)代碼的相關資料,需要的朋友可以參考下
    2017-05-05
  • C語言實現(xiàn)經典掃雷小游戲的示例代碼

    C語言實現(xiàn)經典掃雷小游戲的示例代碼

    掃雷游戲是在一個指定的二維空間里,隨機布置雷,把不是雷的位置都找出來,在你點一個位置的時候它會顯示它周圍全部雷的個數(shù),根據(jù)這個線索去找 ,會更容易贏。本文將用C語言實現(xiàn)這一經典游戲,感興趣的可以嘗試一下
    2022-11-11
  • C語言循環(huán)隊列的表示與實現(xiàn)實例詳解

    C語言循環(huán)隊列的表示與實現(xiàn)實例詳解

    這篇文章主要介紹了C語言循環(huán)隊列的表示與實現(xiàn),對于數(shù)據(jù)結構與算法的研究很有幫助,需要的朋友可以參考下
    2014-07-07
  • C語言字符函數(shù)與字符串函數(shù)詳解

    C語言字符函數(shù)與字符串函數(shù)詳解

    這篇文章主要給大家介紹了關于C語言字符/字符串的相關函數(shù),文中通過示例代碼總結的非常詳細,對大家學習或者使用C語言具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2021-09-09
  • c++選擇排序詳解

    c++選擇排序詳解

    選擇排序(Selection sort)是一種簡單直觀的排序算法。它的工作原理是每一次從無序組的數(shù)據(jù)元素中選出最?。ɑ蜃畲螅┑囊粋€元素,存放在無序組的起始位置,無序組元素減少,有序組元素增加,直到全部待排序的數(shù)據(jù)元素排完。
    2017-05-05
  • C語言實現(xiàn)隨機搶紅包功能

    C語言實現(xiàn)隨機搶紅包功能

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)隨機搶紅包功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-07-07

最新評論

台中县| 廉江市| 肃南| 安远县| 宜宾市| 达日县| 万全县| 阜城县| 门源| 和硕县| 区。| 加查县| 独山县| 昭通市| 自贡市| 松溪县| 抚松县| 宜兰市| 会宁县| 左权县| 黎平县| 广州市| 昌邑市| 河北省| 仪陇县| 四平市| 荥经县| 五大连池市| 石渠县| 建德市| 右玉县| 揭东县| 阳原县| 饶平县| 曲麻莱县| 平塘县| 壶关县| 恩施市| 和硕县| 明光市| 孝感市|