欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java為什么占用四個字節(jié)你知道嗎

 更新時間:2021年08月31日 18:09:43   作者:你這家伙  
這篇文章主要介紹了Java為什么占四個字節(jié),文中介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

簡單了解計算機為什么要采用二進(jìn)制表示信息:

因為計算機作為一種電子計算機工具,是由大量的電子器件組成的,在這些電子器件中,電路的通斷,電位的高低,用兩個數(shù)字符號“1”和“0”分別表示容易實現(xiàn),同時二進(jìn)制的運算法則也很簡單,因此計算機內(nèi)部通常采用二進(jìn)制代碼來作為內(nèi)部存儲,傳輸和處理數(shù)據(jù),二進(jìn)制數(shù)據(jù)是用0和1兩個數(shù)碼來表示的數(shù),它的基數(shù)為2(逢二進(jìn)一,借一當(dāng)二)
其實最開始使用的并不是二進(jìn)制,而是十進(jìn)制,因為人們有十個手指頭,手可以表示十個數(shù)字,所以十進(jìn)制是比較合理的,0的概念是之后很久才誕生的,所以是0-10而不是0-9。

電子計算機出現(xiàn)以后,使用電子管來表示十種狀態(tài)過于復(fù)雜,所以所有的電子計算機中只有兩種基本的狀態(tài),開和關(guān)。也就是說,電子管的兩種狀態(tài)決定了以電子管為基礎(chǔ)的電子計算機采用二進(jìn)制來表示數(shù)字和數(shù)據(jù)。常用的進(jìn)制還有8進(jìn)制和16進(jìn)制,在電腦科學(xué)中,經(jīng)常會用到16進(jìn)制,而十進(jìn)制的使用非常少,這是因為16進(jìn)制和二進(jìn)制有天然的聯(lián)系:4個二進(jìn)制位可以表示從0到15的數(shù)字,這剛好是1個16進(jìn)制位可以表示的數(shù)據(jù),也就是說,將二進(jìn)制轉(zhuǎn)換成16進(jìn)制只要每4位進(jìn)行轉(zhuǎn)換就可以了。

為什么使用二進(jìn)制我們了解了,現(xiàn)在就直奔我們主題

二進(jìn)制位分析

首先計算機只認(rèn)識二進(jìn)制。而一個字節(jié)是8位二進(jìn)制,只用0和1來表示狀態(tài),那么我們看看一位能表示多少個狀態(tài)

1 位:0 和 1 也就是2的一次方,最多表示2個狀態(tài)(要么是0,要么是1)

2 位:00 和 11 也就是2的2次方,最多表示4個狀態(tài),也就是(00,01,10,11)

3 位: 000 和 111 也就是2的3次方,最多表示8個狀態(tài),也就是(000,001,010,011,100,101,110,111)

……以此類推

8位: 就可以表示2的8次方個狀態(tài) = 256個狀態(tài)

9位:表示2的9次方 = 512個狀態(tài)

10位:表示2的10次方 = 1024個狀態(tài)

32位:表示2的32次方 = 4294967296個狀態(tài)

查看底層源碼我們可以看到

在這里插入圖片描述

而int如果轉(zhuǎn)成十進(jìn)制的話,那么他們的范圍[-231~231 -1],也就是“-2147483648 ~ 2147483647”

計算機為了區(qū)分正負(fù)數(shù),所以把256個狀態(tài)一半給了負(fù)數(shù),也就是“-128~127”這256個數(shù)(因為要正負(fù),所以從8位中拿走以為來表示)

byte 占 1個字節(jié) = 8個比特位 就可以表示2的8次方個數(shù)

short占 2個字節(jié) = 16個比特位……

int 占 4 個字節(jié) = 32個比特位

那么為什么int就占了4個字節(jié)呢?

在JAVA中一共有八種基本數(shù)據(jù)類型,它們分別是 byte、short、int、long、float、double、char、boolean

其中byte、short、int、long都是表示整數(shù)的,只不過他們的取值范圍不一樣

  • byte 占用1個字節(jié) 它的取值范圍為 -128 ~ 127

內(nèi)存開銷:

byte a = 1; // 00000001

  • short 占用2個字節(jié),它的取值范圍為 -32768 ~ 32767

short a = 1; // 00000000 00000001

  • int占用4個字節(jié),它的取值范圍為 -2147483648 ~ 2147483647

int a = 1; // 00000000 00000000 00000000 00000001

  • long占用8個字節(jié),它的取值范圍為 -9223372036854774808 ~ 9223372036854774807

這里就不寫了~

問:所有的int都是占四個字節(jié)嗎?

回答:不一定是4個字節(jié),他和操作系統(tǒng)有關(guān)系,int占多少個字節(jié)是由編譯器決定的 以前16位系統(tǒng)中int是2個字節(jié)的,而現(xiàn)在32位的系統(tǒng),int是4個字節(jié)的,其實現(xiàn)在基本上都是64位系統(tǒng), 所謂的16位32位64位系統(tǒng)是由cpu決定的,由機器指令的尋址、寄存器位數(shù)決定的 os受cpu的限制,但在32位的cpu下16位的os也可以跑 很多os是向前兼容的,就是使以前的程序也能運行,如果編譯器本身是16位時代做的,那么os會提供一個模擬16位的子環(huán)境供這個編譯器使用 非要轉(zhuǎn)牛角尖的話,int只是語言定義里面的一個關(guān)鍵字,只對compiler可見,complier說它是幾位就是幾位,和os/cpu都沒關(guān)系

總結(jié)

本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!

相關(guān)文章

  • JAVA List和Map切割工具詳解

    JAVA List和Map切割工具詳解

    這篇文章主要介紹了JAVA List和Map切割工具詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02
  • Spring?Boot?多數(shù)據(jù)源處理事務(wù)的思路詳解

    Spring?Boot?多數(shù)據(jù)源處理事務(wù)的思路詳解

    這篇文章主要介紹了Spring?Boot?多數(shù)據(jù)源如何處理事務(wù),本文單純就是技術(shù)探討,要從實際應(yīng)用中來說的話,我并不建議這樣去玩分布式事務(wù)、也不建議這樣去玩多數(shù)據(jù)源,畢竟分布式事務(wù)主要還是用在微服務(wù)場景下,對Spring?Boot?多數(shù)據(jù)源事務(wù)相關(guān)知識感興趣的朋友參考下本文
    2022-06-06
  • Spring @Valid和@Validated區(qū)別和用法實例

    Spring @Valid和@Validated區(qū)別和用法實例

    這篇文章主要介紹了Spring @Valid和@Validated區(qū)別和用法實例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-04-04
  • MyBatis集成Spring流程詳解

    MyBatis集成Spring流程詳解

    在實際開發(fā)中不僅僅是要展示數(shù)據(jù),還要構(gòu)成數(shù)據(jù)模型添加數(shù)據(jù),這篇文章主要介紹了SpringBoot集成Mybatis操作數(shù)據(jù)庫,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • Java獲取當(dāng)前系統(tǒng)事件System.currentTimeMillis()方法

    Java獲取當(dāng)前系統(tǒng)事件System.currentTimeMillis()方法

    下面小編就為大家?guī)硪黄狫ava獲取當(dāng)前系統(tǒng)事件System.currentTimeMillis()方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • Java基礎(chǔ)學(xué)習(xí)之集合底層原理

    Java基礎(chǔ)學(xué)習(xí)之集合底層原理

    今天帶大家回顧Java基礎(chǔ)的相關(guān)知識,文中對集合底層原理作了非常詳細(xì)的圖文介紹,對Java初學(xué)者有非常好的幫助,需要的朋友可以參考下
    2021-05-05
  • springboot如何整合elasticsearch

    springboot如何整合elasticsearch

    這篇文章主要介紹了springboot如何整合elasticsearch問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • idea中如何使用(Undo Commit...)

    idea中如何使用(Undo Commit...)

    這篇文章主要介紹了idea中如何使用(Undo Commit...)問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • Java中的byte & 0xff到底有什么作用?

    Java中的byte & 0xff到底有什么作用?

    這篇文章主要介紹了Java中的byte & 0xff到底有什么作用,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • Java項目工程代碼深度刨析總結(jié)

    Java項目工程代碼深度刨析總結(jié)

    一個項目工程里的代碼是怎樣的呢?對于初學(xué)者或者沒有參與過項目的零經(jīng)驗同學(xué)這都是未知且讓人好奇的,本篇文章帶你一探究竟,踏入真實項目的大門
    2022-08-08

最新評論