在寫下這句話的時候,本身一直覺得應該是這個「欲」。後來本身百度了一下,發現我錯了,本身一直認爲正確的倒是錯誤的,看來最近真的好好反思一下本身的行爲下面是對這句話的解釋:算法
預:預先,指事先做好計劃或準備;立:成就;廢:敗壞。內存
不論作什麼事,事先有準備,就能獲得成功,否則就會失敗。編譯器
爲何要用這句話做爲文章的標題呢?說來很奇怪,我本身也沒有想清楚,反正最近本身過的渾渾噩噩的,感受本身沒有一點長進,因此,忽然之間,就想到了這句話,算是對本身的一個鞭策,好好的去踐行這句話。編譯
今天算來是來到北京近一個月的時間了,感受本身仍是和之前的狀態一個樣,沒有大多的改變。反正如今就是認爲本身的時間浪費不起,卻是真正沒有好好的去珍惜,人就是這樣,有句話怎麼說的:書非借不讀。有些東西是本身的了,就不會好好的去珍惜,可是若是眼睜睜的看着失去的時候,卻後悔莫及。好啦,廢話很少說,之後有機會再扯這些技術以外的問題,今天就好好的總結一下最近學的一些東西吧。基礎
印象最深的是浮點數在內存中的存放(這個記憶很深):百度
今天是3月10號,就拿3.10來講吧。3.10在計算機的內存中是什麼樣子的呢?就是那個二進制0101什麼的。咱們知道,float數據類型是佔4字節的(其餘編譯器可能不同,姑且先不去談論這個問題),也就是4*8=32位,二進制代碼就是:數據類型
01000000 01000110 01100110 01100110(0x404666)二進制
哈哈,看到是否是暈了,聽我慢慢解釋:float
第1位:表示浮點數的正負,1爲負數,0爲正數,咱們輸入的是3.10,因此就是0技術
第2~9位:轉換爲十進制,再減去127就是指數的大小,至於爲何要減去127,由於這是老鱉的屁股(IEEE的龜腚)。首先,咱們要知道,浮點數在由2部分組成,底數(大於0小於1)和指數。也就是0.310*e^1,而後128-127=1
第10~32位:底數部分。只有23位,其實這裏省略了整數部分1,完整的爲1.1000110 0110011001100110,這裏指數E=1,也就變成了11.0001100110011001100110,換算爲10進制,整數部分我一眼就看出來是3,可是小數部分怎麼算呢?(基礎很差爲嘛還要搞這麼底層,自找苦吃)
小數部分的換算:1*(2^-4)+1*(2^-5)+1*(2^-8)+1*(2^-9)……,爲啥是這樣子呢?0.0625+0.03125+… …+……=0.1(大約)
到這裏,我相信你會想到一句話,浮點型數據在運算中會有精度的損失,正是由於它在內存中這樣獨特的存儲方式,因此纔會致使這個問題。
那麼有什麼辦法躲避這個問題呢?呵呵,這就不是本文的探討範圍了,網上有具體的算法,你們能夠看看,反正我是沒有細究下去,畢竟如今還用不着。
上邊說的是怎麼把一個二進制轉換爲一個十進制,那我如今好比給個-17.625,二進制怎麼手動計算出來呢?
首先,這是個負數,第1位是1
其次,寫成指數形式是0.17625*e^2,指數是2,2+127=129,二進制位1000 0001
最後,底數部分。17.625的二進制爲:
整數部分:10001
小數部分:0.625*2=1.250餘1
0.250*2=0.5 餘0
0.5*2=1 餘0
合併起來爲:10001.100
不行,思路不清晰,第一次寫,明天整理下,sorry