学习日记[2]

閱讀時間約 4 分鐘

今天,我知道了计算机中数据的存储方式,虽然暂时还是关于数字的存储方式。

众所周知,计算机按照大类可分为数据,硬件和软件,这是基于冯诺依曼模型下现代计算机的组成。我也是按照这个顺序学习的。数据按照单类可分为五类:数字,文字,图像,音频和视频(这里的视频是指动起来的画面,不含音乐和音效的那种),现在大多都是这五类的排列组合而不是只单独的一类(当然,这里说的是大多,而不是全部),这五种排列与组合也有一个学名——多媒体。

从易到难,数字。提到数字,当然第一个想到的就是复数,也就是实数集与虚数集的合集。我们都知道复数的公式是a+bi(其中a与b是实数),也就是说,在计算机中我们可以用两个实数和一个常量i来表示虚数。那么我们只需要研究如何表示一个实数就可以了。可问题来了,一个实数的整数部分,小数部分,小数点和正负号该如何表示呢?可能我们会认为,将位分为四部分,分别代表正负号,整数,小数点和小数,可这样会产生以下问题。

第一个问题就是可表示数字的位数较少。假设正负号占一位,小数点占一位,那么可表示的数字位就少了两个,相对应的,可以表示的数字最多比占满少了四倍,这不是一个小数目。

第二个就是过于复杂。如果我们想要存储一个数字,就必须确定其正负,小数点应该在第几位,后续如果要变化其大小,就必须每次都移动小数点的位置。假设一下,我要定义一组数据,然后每一次改变都需要这样操作,实在是太麻烦了。

所以不能将实数进行一个统一的定义,得按照需求进行分类并分别定义。从需求和历史发展角度来看,我们可分为有小数部分和无小数部分,他们分别称为整数(其实我感觉应该叫定点数)和浮点数。他们名字是根据小数点是否浮动来定义的,因为整数的小数点是固定的,总是在数字的最右边,所以成为定点数或者整数。而有小数部分就需要考虑其精度,所以其小数点的位置是浮动的也就是浮点数。

我们一个一个来,整数又可以按照是否需要正负号分成两类。一个类是不需要正负号,称为无符号整数。在整数中,小数点是默认在位的最右边但是不占位。所以在无符号整数中,所有的位数都被用来表示大小。上一篇文章中提到,计算机中数据是以二进制存储的,也就是说,数字要首先转化成二进制数,然后补全位数使其适应计算机位数,最后放入一开始规划好的内存里。但我们需要注意的是,固定位数的内存所能存储的数字的大小是有上限的,假设位数是N(N是正整数),那么最大可存储的数字是(2^N-1)。如果我们要存储比其大的数字的时候,需要更大的位数。可如果我们在运算时数字超过位数最大值会发生什么呢?答案是溢出。溢出的位数不会存储在内存中,之后会丢失。计算机中只会从右到左存储相应位数的值。

第二类是需要正负号。这里有两种思路来存储,其中一种是绝对值存储。就是用最左边的位存储正负号(0表示正,1表示负),剩下的位全部用来表示数字的大小,用这种存储方式表示的最大正数是无符号整数的一半。需要注意的是,这种方式会产生两个零,以四位为例就是0000和1000。其余存储方式和无符号整数的存储方式相同。同理,这种方式也会有一个存储最大值,也会出现溢出的问题,从负数到正数称为负溢出,与之相反的过程称为正溢出。或许你没有发现,这种方式在运算时会产生很大问题。在进行四则运算时,用的是所代表的绝对值进行运算,也就会闹出 (-5)*(-5)=(-25)的笑话。所以会有下面的新的存储方式。

另外一种就是补码表示法,就是总体思想是一样的,但是原理不同。在介绍之前我们需要知道什么是反码和补码。反码顾名思义就是反过来,1100的反码就是0011。补码有两种算法,其中一种是从右到左复制位上的数字,直到复制第一个1时,随后的所有位都取反码,另外一种就是先取反码然后加1,例如1100的补码就是0100。书上说补码的存在是为了方便运算,具体真假等看到下一章节再说吧。然后之后的转换过程我们就可以看懂了。最左边位表示符号,0为正,1为负,这个前提要知道。第一步,要将数字转化为二进制数,如位数不足,便补全0。然后确定该数是正数还是负数,整数就直接存储在计算机中,如果是负数便按照其补码形式存储在计算机中。要输出数据时,我们需要按照相反的顺序还原该数。如果最左边的位数是0,便直接转化为十进制,这便是输出要数字;如果是1,那么需要先按照求其补码,之后再将补码的结果进行转化成十进制。

补码表示法是将整个范围分为非负数和负数,这样就避免了两个零的存在。

浮点数等明天再说吧,今天还是玩的太疯了,只看了这一点,一定改。

    0會員
    20內容數
    这个专题是我个人的学习日记,每日会更新,内容很乱,请多见谅。
    留言0
    查看全部
    發表第一個留言支持創作者!
    YLAMBDA的沙龍 的其他內容
    学习日记[0]
    閱讀時間約 1 分鐘
    学习日记[1]
    閱讀時間約 4 分鐘
    你可能也想看
    創作者要怎麼好好休息 + 避免工作過量?《黑貓創作報#4》午安,最近累不累? 這篇不是虛假的關心。而是《黑貓創作報》發行以來可能最重要的一篇。 是的,我們這篇講怎麼補充能量,也就是怎麼休息。
    Thumbnail
    avatar
    黑貓老師
    2024-06-29
    防曬產品係數測試報告彙整(2024年)從2014年起,自己對於市售防曬產品的效能產生了濃厚的興趣。因為當時候發現不少產品的防曬係數其實標示是有問題的,像是原本應該是人體測試的SPF與PA數值,實際上沒有做,只用機器測試的數據來充當,但這兩者卻有很大的差異。像是防曬係數其實有強度、廣度與平均度三個面向需要一起判斷,但多數廠商並沒有完整標示
    Thumbnail
    avatar
    邱品齊皮膚科醫師
    2023-04-27
    2023.07.11股市學習日記我太太在學校和學生家長媽媽聊天時,不小心將我的策略跟這位媽媽說,結果被她笑!她老公在台積電當工程師,之前她還有在工作時的身份是銀行理專!現在是全職媽媽!她說她看過太多了,眼看樓起,眼看樓塌,現在專心學佛,不貪婪,多方資產配置,只有少數在股市!有小賺幾千就很開心!看蠻開的,也好啦! 我的策略真的很簡
    avatar
    Tin Lin
    2023-07-11
    2023.06.24股市學習日記回顧前兩年的已實現損益,從資料可看出 2021年我還是處於頻繁買賣的境界,小賺就賣,頻繁交易,所衍生出來的手續費、交易稅、買賣總金額都很大!這無形中都是損失(損失了手續費和交易稅,都被政府給賺走了),這是有形的,無形的還是後頭~視力、身體健康、陪伴家人的時間、心情情緒…。 2022年我已經慢慢轉變,
    Thumbnail
    avatar
    Tin Lin
    2023-06-24
    2023.05.23股市學習日記一年股市開市大約有240天(扣除掉例假日)
    avatar
    Tin Lin
    2023-05-26
    【學習在關係裡成長日記】#2何謂有效的溝通 學習在關係裡成長,不被自己的情緒困住 改變是成為更好的自己,而非迎合他人 有效的溝通方式 在關係中,溝通是很重要的一件事。但什麼樣的溝通才是有效的呢? 只求對方理解自己的溝通方式,究竟是強迫對方接受自己的需要,還是真的只是在表達自己的想法? 開始溝通前,我們都是抱持著想要對方理解我們
    avatar
    huee
    2023-03-13
    塔羅日記#2 學習在精不在多黑貓塔羅開課了,針對想要認真學習塔羅牌的朋友,黑貓會陪您一起完成30天不中斷的塔羅日記,詳情請看文末喔! 問題#2:學習心理學課程,對塔羅占卜有幫助? 看了某個塔羅老師演示如何運用心理學技巧解析個案心理狀態,突然也想要去學一點心理學的知識,於是想問如果我去學心理學課程,會不會對塔羅占卜有幫助,抽到寶
    Thumbnail
    avatar
    只是一個塔羅占卜師
    2023-03-07
    Photoshop 學習日記_前言去年(2021)12月起,開始進修自媒體課程。 為了讓自己持續復習,免得過去學習的辛苦白廢,決定開始發表學習成果!這算是……..替自己舉辦『線上成果展』嗎?
    Thumbnail
    avatar
    菓子淇
    2022-03-06
    Photoshop 學習日記_商業廣告1.0學習Photoshop後的第一個商業廣告作品,雖然賣相不佳,但仍決定公開,留下成長的足跡....
    Thumbnail
    avatar
    菓子淇
    2022-03-06
    Photoshop 學習日記_商業廣告2.0春耕、夏耘、秋收、冬藏,現在即使不是冬藏的年紀,至少也該秋收了吧!居然又搞來這麼一齣『二期稻作』的把戲折磨自己。 不過,準備秋收的年紀,確實有著秋收年紀的歷練,因為已有一期稻作的存糧,不必擔心鬧饑荒;同時,也有了春耕、夏耘的經驗,遇到困難便很清楚的知道,撐過去就好了!
    Thumbnail
    avatar
    菓子淇
    2022-03-06
    YouTube學習日記:著作版權與CC知識共享最近在 YouTube 做了多段基於網絡共筆的 SCP 基金會 (維基百科)。SCP基金會是有點像《黑鏡》、《世界奇妙物語》、《陰陽魔界》黑暗奇幻風格,它就一個負責收容各種具有異常屬性的東東的「虛構」秘密組織,主要由作者投稿新的「異常」。 短片引用的版權素材其實就像以前大學寫論文引用一樣。
    Thumbnail
    avatar
    CT Curtis
    2021-01-30