亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        源于MATLAB中cast和typecast函數(shù)數(shù)據(jù)格式的探討

        2020-08-13 07:02:45王選張欣李曉歐嚴(yán)加勇白寶丹查雨彤單純玉
        教育教學(xué)論壇 2020年29期
        關(guān)鍵詞:符號

        王選 張欣 李曉歐 嚴(yán)加勇 白寶丹 查雨彤 單純玉

        [摘 要] MATLAB是工程計算中應(yīng)用非常廣泛的一種軟件,熟練掌握MATLAB是大部分工科類學(xué)生所必備的技能。通過對MATLAB教材中習(xí)題的解答,分析了cast和typecast兩個函數(shù),介紹了大端和小端兩種字節(jié)序類型,以及整數(shù)及浮點(diǎn)數(shù)在計算機(jī)中的存儲格式。由此,可以使學(xué)生學(xué)會使用MATLAB函數(shù),并了解數(shù)據(jù)在計算機(jī)中存儲格式。

        [關(guān)鍵詞] MATLAB;IEEE 754;字節(jié)序;數(shù)據(jù)格式

        [基金項目] 上海市教委重點(diǎn)課程建設(shè)項目“數(shù)字信號處理”(B1-0200-19-309411);上海健康醫(yī)學(xué)院教學(xué)建設(shè)項目“基于穿戴式醫(yī)療技術(shù)與器械工程研究中心的生物醫(yī)學(xué)工程本科創(chuàng)新能力個性化培養(yǎng)‘四個一工程”(B1-0200-19-309302)

        [作者簡介] 王 選,博士,上海健康醫(yī)學(xué)院醫(yī)療器械學(xué)院講師,主要從事生物醫(yī)學(xué)信號的分析與處理研究;單純玉,博士,上海健康醫(yī)學(xué)院醫(yī)療器械學(xué)院教授(通信作者),主要從事醫(yī)學(xué)儀器設(shè)計與開發(fā)研究。

        [中圖分類號] G642.0 ? ?[文獻(xiàn)標(biāo)識碼] A ? ?[文章編號] 1674-9324(2020)29-0363-03 ? ?[收稿日期] 2019-10-10

        MATLAB是美國MathWorks公司出品的商業(yè)數(shù)學(xué)軟件,用于算法開發(fā)、數(shù)據(jù)可視化、數(shù)據(jù)分析以及數(shù)值計算的高級技術(shù)計算語言和交互式環(huán)境。MATLAB課程在很多高校中已成為工科類學(xué)生必修的專業(yè)基礎(chǔ)課,熟練掌握MATLAB已成為相關(guān)專業(yè)學(xué)生必備的技能之一。

        一、教材中的習(xí)題

        在教學(xué)中,我們的教材采用了張威編著的《MATLAB基礎(chǔ)與編程入門》(第三版),該教材受中國電子教育學(xué)會高教分會推薦,是普通高等教育電子信息類”十三五“規(guī)劃教材。該教材第3章數(shù)據(jù)類型的章后練習(xí)第1題為[1]“在進(jìn)行數(shù)值類型數(shù)據(jù)轉(zhuǎn)換時,可以使用cast或typecast函數(shù),例如a=-1,若使用這兩個函數(shù)將變量a轉(zhuǎn)換為無符號的8位整數(shù),計算的結(jié)果是什么?”

        針對此題,我們利用MATLAB 2015b運(yùn)行如下的代碼

        a=-1;

        b=cast(a,'uint8')

        c=typecast(a,'uint8')

        得到結(jié)果為

        b=0

        c=0 ? ?0 ? ?0 ? ?0 ? ?0 ? ?0 ? ?240 ? ?191

        雖然結(jié)果運(yùn)行出來,但是為何會出現(xiàn)這個結(jié)果?這個結(jié)果令學(xué)生比較困惑,本文將對問題進(jìn)行解答,同時介紹數(shù)據(jù)在計算機(jī)中的存儲格式。

        二、cast函數(shù)和typecast函數(shù)

        查詢MATLAB的幫助文檔,可知cast函數(shù)會截取數(shù)據(jù)以適應(yīng)新的數(shù)據(jù)類型,它會改變內(nèi)存中的數(shù)據(jù)。已知無符號8位整數(shù)‘uint8的數(shù)值表示范圍為0~2^8-1,即0~255。故a=-1時,則得到運(yùn)行結(jié)果b=0。對如下數(shù)值進(jìn)行轉(zhuǎn)換,有cast(-2.5,'uint8')=0;cast(25.5,'uint8')=26;%四舍五入cast(300,'uint8')=255;%最大為255同理對于有符號16位整數(shù)‘int16,其數(shù)值表示范圍為-2^15~2^15-1,有cast(-20.5,'int16')=-21cast(-65536,'int16')=-32768,即-2^15.

        查詢MATLAB的幫助文檔,可知typecast函數(shù)與cast函數(shù)不同,它在進(jìn)行數(shù)據(jù)類型轉(zhuǎn)換時,不會截取數(shù)據(jù),不會改變內(nèi)存中數(shù)據(jù)。對其結(jié)果的解釋需要了解數(shù)據(jù)在內(nèi)存中的存儲格式。

        三、內(nèi)存中的數(shù)據(jù)存儲格式

        (一)大端和小端字節(jié)序

        字節(jié)序是指整數(shù)在內(nèi)存中保存的順序,有大端(big-endian)和小端(little-endian)兩種類型。1980年,Danny Cohen在其著名的論文“On Holy Wars and a Plea for Peace”中為了平息一場關(guān)于在消息中字節(jié)該以什么樣的順序進(jìn)行傳送的爭論而引用了大端和小端兩個詞。[2]他非常形象貼切地把支持從一個消息序列的最高位開始傳送的那伙人叫作Big-Endians,支持從最低位開始傳送的相對應(yīng)的叫作Little-Endians。

        在計算機(jī)的內(nèi)存中,小端字節(jié)序?qū)⒌托蜃止?jié)存儲在起始地址(低位編址),而大端是將高序字節(jié)存儲在起始地址(高位編址)。例如對于857的存儲,兩種字節(jié)序的存儲方式如表1所示。

        小端字節(jié)序最符合人的思維,即地址低位存儲值的低位,地址高位存儲值的高位。而大端字節(jié)序是最直觀的字節(jié)序,即地址低位存儲值的高位,地址高位存儲值的低位。只需要把內(nèi)存地址從左到右按照由低到高的順序?qū)懗?,把值按照通常的高位到低位的順序?qū)懗?兩者對照,一個字節(jié)一個字節(jié)的填充進(jìn)去。

        計算機(jī)中不同的CPU有不同的字節(jié)序類型,x86系列的CPU都是小端的字節(jié)序。

        (二)整數(shù)類型

        1.正數(shù)。數(shù)據(jù)在內(nèi)存中是以補(bǔ)碼存儲的,正數(shù)的補(bǔ)碼與原碼相同。

        對于數(shù)值1,其補(bǔ)碼為“0000 0001”,則typecast函數(shù)保持其補(bǔ)碼不變,故為typecast(int8(1),'uint8')=1。同理,對于有符號32位整數(shù)來說,256的補(bǔ)碼為“0000 ?0000 ?0000 ?0000 ?0000 ?0001 ?0000 ?0000”。

        如果將其轉(zhuǎn)換為無符號8位整數(shù),則上述補(bǔ)碼以8位為一個單位進(jìn)行分隔,得到“0000 ?0000,0000 ?0000, 0000 ?0001, 0000 ?0000”。

        以小端字節(jié)序看待,低位地址存值的低位,高位地址存高位。故執(zhí)行命令typecast(int32(256),'uint8')得到結(jié)果為“0 ?1 ?0 ?0”。

        如果將256轉(zhuǎn)換為無符號16位整數(shù),則補(bǔ)碼以16位為一個單位進(jìn)行分隔,得到“0000 ?0000 ?0000 ?0000, 0000 ?0001 ?0000 ?0000”。

        再以小端字節(jié)序看待,故執(zhí)行命令typecast(int32(256),'uint16')得到結(jié)果為“256 ?0”。

        3.負(fù)數(shù)。對于負(fù)數(shù),補(bǔ)碼與原碼不同。

        例如于有符號8位整數(shù),-2的原碼為“1000 0010”,反碼為“1111 1101”,補(bǔ)碼為“1111 1110”。

        typecast函數(shù)保持其補(bǔ)碼不變,故將其轉(zhuǎn)換為無符號8位整數(shù)時,故為typecast(int8(-2),'uint8')=254。

        若-2為有符號16位整數(shù),則原碼為“1000 ?0000 0000 0010”,反碼為“1111 1111 1111 1101”,補(bǔ)碼為“1111 1111 1111 1110”,將其轉(zhuǎn)換為無符號8位整數(shù)時,則8位為一個單位進(jìn)行分隔,有“1111 ?1111,1111 ?1110”。以小端字節(jié)序看待,故執(zhí)行倒序typecast(int16(-2),'uint8')得到結(jié)果為254 255。

        (三)浮點(diǎn)數(shù)

        對于浮點(diǎn)數(shù)的表示,IEEE(Institute of Electrical and Electronics Engineers,電子電氣工程師協(xié)會)在1985年制定了二進(jìn)制浮點(diǎn)數(shù)算術(shù)標(biāo)準(zhǔn)(ANSI/IEEE Std 754-1985),又稱IEC 60559:1989,它是微處理器系統(tǒng)的二進(jìn)制浮點(diǎn)數(shù)算術(shù)。[3,4]根據(jù)此標(biāo)準(zhǔn),一個單精度浮點(diǎn)數(shù)用32位二進(jìn)制數(shù)存儲,最高位第32位為符號位,中間的第24-31位為指數(shù)部分,最后第1-23位為小數(shù)部分。雙精度浮點(diǎn)數(shù)用64位二進(jìn)制數(shù)存儲,最高位第64位為符號位,中間的第53-63位為指數(shù)部分,最后第1-52位為小數(shù)部分,如表2所示。

        即二進(jìn)制為“1011 1111 1111 0000 0000 ……”。

        將其轉(zhuǎn)換為無符號8位整數(shù),則以8位為一個單位進(jìn)行分隔,得到“1011 1111,1111 0000,0000 ……”。以小端字節(jié)序看待,故執(zhí)行命令typecast(-1,'uint8')得到結(jié)果為“0 ?0 ?0 ?0 ?0 ?0 ?240 ?191”。即之前的運(yùn)行結(jié)果。

        同理若將其轉(zhuǎn)換為無符號16位整數(shù),則以16位為一個單位進(jìn)行分隔,得到“1011 ?1111 ?1111 ?0000,0000 ……”。以小端字節(jié)序看待,故執(zhí)行命令typecast(-1,'uint16')得到結(jié)果為“ 0 ?0 ?0 ?49136”。

        四、結(jié)果與討論

        通過以上對MATLAB的運(yùn)行結(jié)果的解釋,我們介紹了兩個函數(shù)的特點(diǎn),以及整數(shù)及浮點(diǎn)數(shù)在內(nèi)存的存儲格式。因為MATLAB默認(rèn)的格式為雙精度浮點(diǎn)數(shù),故本文對雙精度浮點(diǎn)數(shù)作了詳細(xì)介紹,單精度浮點(diǎn)數(shù)的情況類似。此外,我們只針對習(xí)題分析了雙精度浮點(diǎn)數(shù)轉(zhuǎn)換為無符號整數(shù)的情況,如果要轉(zhuǎn)換為其他類型的數(shù)據(jù),同理可以進(jìn)行分析。

        總之,通過以上分析,加深了學(xué)生對數(shù)據(jù)格式的理解,并啟發(fā)學(xué)生面對困惑,要查找資料進(jìn)行解決。

        參考文獻(xiàn)

        [1]張威.MATLAB基礎(chǔ)與編程入門[M].第3版.西安:西安電子科技大學(xué)出版社,2017.

        [2]Cohen D.On Holy Wars and a Plea for Peace[J].Computer,1981(14):48-54.

        [3]朱亞超.基于IEEE754的浮點(diǎn)數(shù)存儲格式分析研究[J].計算機(jī)與信技術(shù),2006(9):50-52.

        [4]楊軍.基于IEEE的浮點(diǎn)數(shù)格式分析及轉(zhuǎn)換方法研究[J].甘肅科技縱橫,2009,38(5):19-20.

        猜你喜歡
        符號
        幸運(yùn)符號
        符號神通廣大
        學(xué)符號,比多少
        幼兒園(2021年6期)2021-07-28 07:42:14
        “+”“-”符號的由來
        靈魂的符號
        散文詩(2017年17期)2018-01-31 02:34:20
        怎樣填運(yùn)算符號
        變符號
        倍圖的全符號點(diǎn)控制數(shù)
        圖的有效符號邊控制數(shù)
        草繩和奇怪的符號
        一区二区三区最新中文字幕| 无码少妇a片一区二区三区| 亚洲香蕉成人AV网站在线观看| 国产成人一区二区三区高清| 国产成人AⅤ| 日本a爱视频二区三区| 亚洲性久久久影院| 精品少妇爆乳无码av无码专区| 日日鲁鲁鲁夜夜爽爽狠狠视频97| 亚洲国产成人手机在线电影| 极品美女尤物嫩模啪啪| 黄页免费人成网址大全| 国产精品高清网站| 国产va免费精品高清在线观看 | 国产午夜福利在线观看中文字幕 | 少妇被又大又粗又爽毛片久久黑人| 久久国产加勒比精品无码| 特级做a爰片毛片免费看无码| 无码一区二区三区AV免费换脸| 加勒比久草免费在线观看| 韩国av一区二区三区不卡| 999久久久国产精品| 91精品国产综合成人| 国产久视频| 熟女免费观看一区二区| 综合色就爱涩涩涩综合婷婷 | 中文AV怡红院| 中文字幕国内一区二区| 99久久精品人妻一区| 人妻洗澡被强公日日澡电影 | 精品久久久久久久久久久aⅴ| 51精品视频一区二区三区| 偷窥偷拍一区二区三区| 四虎影视久久久免费观看| 国产xxxx99真实实拍| 一区一级三级在线观看 | 白浆出来无码视频在线| 在线亚洲精品国产成人二区| 国产在线一区二区三区四区不卡| 天天夜碰日日摸日日澡| 毛片网站视频|