亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

C語(yǔ)言中大小端問(wèn)題實(shí)例探索解決方法

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

一、什么是大小端

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

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

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

二、舉個(gè)例子

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

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

三、大小端演示

按照不同模式將a保存在內(nèi)存中,情況如下:

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

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

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

四、解釋"二"中舉例的問(wèn)題

那么剛剛VS2019中的問(wèn)題就可以講的通了,在VS2019中,數(shù)據(jù)往內(nèi)存中存放是由高地址到低地址的,由于存儲(chǔ)方式是小端存儲(chǔ)模式,所以先往里放高位字節(jié)的內(nèi)容,即對(duì)于0x12345678來(lái)說(shuō),從高地址往低地址存放時(shí),放入順序就如圖a所示。然后由于操作系統(tǒng)在訪問(wèn)內(nèi)存數(shù)據(jù)時(shí)是從低地址向高地址的順序進(jìn)行的,所以最后顯示的存放就如圖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;
}

六、一個(gè)題目

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

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;
}

解析:

假設(shè),a變量的地址為0x64,則a變量在內(nèi)存中的模型為:

0x64| 44 |

0x65| 33 |

0x66| 22 |

0x67| 11 |

char*類(lèi)型的指針變量pc指向只能指向字符類(lèi)型的空間,如果是非char類(lèi)型的空間,必須要將該空間的地址強(qiáng)轉(zhuǎn)為char*類(lèi)型。

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

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

因此:選擇C

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

相關(guān)文章

  • c++ fstream 文件追加模式示例詳解

    c++ fstream 文件追加模式示例詳解

    本文給大家介紹c++ fstream 文件追加模式示例詳解,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2023-10-10
  • C/C++ 實(shí)現(xiàn)遞歸和棧逆序字符串的實(shí)例

    C/C++ 實(shí)現(xiàn)遞歸和棧逆序字符串的實(shí)例

    這篇文章主要介紹了C/C++ 實(shí)現(xiàn)遞歸和棧逆序字符串的實(shí)例的相關(guān)資料,這里提供實(shí)例代碼幫助大家學(xué)習(xí)掌握,需要的朋友可以參考下
    2017-08-08
  • C語(yǔ)言之初識(shí)指針

    C語(yǔ)言之初識(shí)指針

    在C語(yǔ)言中,指針是一種保存變量地址的變量。這篇文章介紹了初識(shí)C語(yǔ)言指針,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-12-12
  • C++中獲取UTC時(shí)間精確到微秒的實(shí)現(xiàn)代碼

    C++中獲取UTC時(shí)間精確到微秒的實(shí)現(xiàn)代碼

    本篇文章是對(duì)C++中獲取UTC時(shí)間精確到微秒的實(shí)現(xiàn)進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • C++中std::count函數(shù)介紹和使用場(chǎng)景

    C++中std::count函數(shù)介紹和使用場(chǎng)景

    std::count函數(shù)是一個(gè)非常實(shí)用的算法,它可以幫助我們快速統(tǒng)計(jì)給定值在指定范圍內(nèi)的出現(xiàn)次數(shù),本文主要介紹了C++中std::count函數(shù)介紹和使用場(chǎng)景,感興趣的可以了解一下
    2024-02-02
  • C++繼承類(lèi)成員訪問(wèn)權(quán)限修飾符詳解

    C++繼承類(lèi)成員訪問(wèn)權(quán)限修飾符詳解

    這篇文章主要為大家介紹了C++繼承類(lèi)成員訪問(wèn)權(quán)限修飾符,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2021-12-12
  • C++?std::array實(shí)現(xiàn)編譯器排序

    C++?std::array實(shí)現(xiàn)編譯器排序

    這篇文章主要介紹了C++?std::array實(shí)現(xiàn)編譯器排序,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-06-06
  • 一文詳解C++中的mutable關(guān)鍵字

    一文詳解C++中的mutable關(guān)鍵字

    在C++中mutable關(guān)鍵字正如字面意思所示,表示「可變的」之意,一般在以下兩種情況中使用較多,一是修飾類(lèi)中的變量,用來(lái)突破const的限制,二是在Lambda表達(dá)式中使用,用來(lái)捕獲修改表達(dá)式之外的變量值,下面我們就針對(duì)這兩種使用場(chǎng)景逐個(gè)介紹
    2023-10-10
  • 基于Qt實(shí)現(xiàn)C/C++調(diào)用Matlab函數(shù)全過(guò)程

    基于Qt實(shí)現(xiàn)C/C++調(diào)用Matlab函數(shù)全過(guò)程

    這篇文章給大家詳細(xì)介紹了基于Qt平臺(tái)實(shí)現(xiàn)C/C++調(diào)用Matlab函數(shù)全流程,文中通過(guò)圖文和代碼示例給大家講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-01-01
  • C語(yǔ)言make和Makefile介紹及使用

    C語(yǔ)言make和Makefile介紹及使用

    這篇文章介紹了C語(yǔ)言make和Makefile以及使用方法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-01-01

最新評(píng)論