數(shù)字

在計算機中根據(jù)小數(shù)點位置是否固定,數(shù)字分為定點數(shù)和浮點數(shù)兩種類型,整數(shù)屬于定點數(shù),它的小數(shù)點始終固定在最右邊。浮點數(shù),根據(jù)精度可以分為單精度浮點和雙精度浮點數(shù)兩種。

一、整數(shù)

整數(shù)分為無符號整數(shù)和有符號整數(shù)兩種

1、無符號整數(shù)

無符號整數(shù)按其二進制的形式直接存儲

2、有符號整數(shù)

有符號整數(shù)是在無符號整數(shù)的基礎上在最左邊加上符號位構成的

  • 符號位:對于有符號整數(shù),它的最高位稱為符號位,0代表整數(shù),1代表負數(shù)。
  • 原碼:符號位+無符號整數(shù)的二進制數(shù)據(jù) = 原碼,也就是說原碼由符號位和無符號整數(shù)的二進制數(shù)據(jù)兩部分組成。

然而在計算機中,為了加快運算速度,有符號整數(shù)并不是以原碼的形式而存在的,在存儲和讀取時都需要進行轉(zhuǎn)化。


轉(zhuǎn)化流程
  • 反碼:
    正數(shù)的反碼等于原碼
    負數(shù)的反碼是在其原碼的基礎上,符號位不變,其余位置取反,即0變1,1變0
  • 補碼:
    正數(shù)和負數(shù)的補碼也不一樣,也要區(qū)別對待。
    對于正數(shù),它的補碼就是其原碼(原碼、反碼、補碼都相同);負數(shù)的補碼是其反碼加 1。例如short a = 6;,a 的原碼、反碼、補碼都是0000 0000 0000 0110;更改 a 的值a = -18;,此時 a 的補碼是1111 1111 1110 1110。

可以認為,補碼是在反碼的基礎上打了一個補丁,進行了一下修正,所以叫“補碼”。
原碼、反碼、補碼的概念只對負數(shù)有實際意義,對于正數(shù),它們都一樣,有了這幾步轉(zhuǎn)化,計算機減法統(tǒng)一為加法,并帶符號直接運算,大大簡化了硬件電路,不需要再區(qū)分正負符號,以及將加減統(tǒng)一為加。

二、浮點數(shù)

浮點數(shù)在計算機中以科學記數(shù)法的方式存在的,根據(jù)精度不同可分為32位的單精度浮點數(shù),和64位的雙精度浮點數(shù)。


浮點數(shù)
1、單精度浮點數(shù):

單精度浮點數(shù),共32bit占4個字節(jié)內(nèi)存,由符號位、指數(shù)位、尾數(shù)三部分組成,下面結合8.5(100.1 |{1.001*2^2})具體說一下

  • 符號位:
    同整數(shù)的符號位相同,0正1負,占一個bit,對于8.5的符號位為0
  • 指數(shù):
    指數(shù)部分占8bit,其值需要在原值的基礎上加上{2^7-1},由此指數(shù)部分的最大值為127
    {2^7-1}轉(zhuǎn)換位二進制為1111111
    對于8.5的指數(shù)位={2^7-1+3}=1111111+10=10000001
  • 尾數(shù):
    尾數(shù)同科學記數(shù)法
    對于8.5的尾數(shù)為001 00000 00000 00000 00000

由此可依得出,單精度浮點數(shù)對應的{十進制值=符號位 * 1.尾數(shù)*2^{指數(shù)-1111111}}
對于8.5這個例子
{8.5 = 1*1.001 00000 00000 00000 00000*2^{10000001-1111111}}
簡化一下得
{8.5 = 1*1.001 *2^{10} =1.001 *2^{2}}
去掉指數(shù)得
{8.5 = 100.1 }
同理亦可計算出單精度浮點數(shù)的極值,{極大值 = 1*1.11111 11111 11111 11111 111 *2^{127} =2 *2^{127 }=2^{128}=3.4*10^{38}}

2、雙精度浮點數(shù)

雙精度浮點數(shù),轉(zhuǎn)化原理同單精度沒有區(qū)別只是位數(shù),最大最小值的變化。

三、js中的Number

對于js,所有的number都是雙精度浮點數(shù)。
對于浮點數(shù)的運算,存在精度丟失問題,因此js中也會如此,造成的原因就是小數(shù)部分轉(zhuǎn)化為二進制,例如0.3,一只*2取整數(shù),是取不盡的,故而知能取約數(shù),因此產(chǎn)生惡劣精度丟失。

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容