最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

一些java二進(jìn)制的相關(guān)基礎(chǔ)知識(shí)

 更新時(shí)間:2019年06月20日 09:30:29   作者:匠心零度  
這篇文章主要介紹了一些java二進(jìn)制的相關(guān)基礎(chǔ)知識(shí),在Java語言中byte代表最小計(jì)量單位,byte由8位2進(jìn)制數(shù)組成。,需要的朋友可以參考下

說明

任何東西都有規(guī)范,提到JAVA就會(huì)提到2個(gè)規(guī)范,JAVA語言規(guī)范、JVM規(guī)范。JAVA語言規(guī)范主要定義JAVA的語法、變量、類型、文法等等,JVM規(guī)范主要定義Class文件類型、運(yùn)行時(shí)數(shù)據(jù)、幀棧、虛擬機(jī)的啟動(dòng)、虛擬機(jī)的指令集等等。

  • JAVA語言規(guī)范主要定義什么是JAVA語言。
  • JVM規(guī)范主要定義JVM內(nèi)部實(shí)現(xiàn),二進(jìn)制class文件和JVM指令集等。

規(guī)范中數(shù)字的內(nèi)部表示和存儲(chǔ)

JAVA八種基本數(shù)據(jù)類型:

  • 整形:byte,short,int,long
  • 浮點(diǎn)型:float,double
  • 布爾型:boolean
  • 字符型:char
  • 數(shù)據(jù)類型 所占位數(shù)

數(shù)據(jù)類型 所占位數(shù)
int 32bit
short 16bit
long 64bit
byte 8bit
char 16bit
float 32bit
double 64bit
boolean 1bit

備注:1字節(jié)=8位(1 byte = 8bit)

整數(shù)的表示

  • 源碼:第一位為符號(hào)位(0表示正數(shù),1表示負(fù)數(shù))。
  • 反碼:符號(hào)位不動(dòng),原碼取反。
  • 負(fù)數(shù)補(bǔ)碼:符號(hào)位不動(dòng),反碼加1。
  • 正數(shù)補(bǔ)碼:和源碼相同。

備注:補(bǔ)碼的好處:

使用補(bǔ)碼可以沒有任何歧義的表示0。

補(bǔ)碼可以很好的參與二進(jìn)制的運(yùn)算,補(bǔ)碼相加符號(hào)位參與運(yùn)算,這樣就簡(jiǎn)單很多了。

浮點(diǎn)數(shù)表示

在上圖中,我們了解到Float與Double都是支持IEEE 754

我們以float來說明:

IEEE745單精度浮點(diǎn)格式共32位,包含三個(gè)構(gòu)成字段:23位小數(shù)f,8位偏置指數(shù)e,1位符號(hào)s。將這些字段連續(xù)存放在一個(gè)32位字里,并對(duì)其進(jìn)行編碼。其中0:22位包含23位的小數(shù)f; 23:30位包含8位指數(shù)e;第31位包含符號(hào)s。

一個(gè)實(shí)數(shù)V在IEEE 754標(biāo)準(zhǔn)中可以用V=(-1)s×M×2E 的形式表示,說明如下:

  • 符號(hào)s(sign)決定實(shí)數(shù)是正數(shù)(s=0)還是負(fù)數(shù)(s=1),對(duì)數(shù)值0的符號(hào)位特殊處理。
  • 有效數(shù)字M(significand)是二進(jìn)制小數(shù),M的取值范圍在1≤M<2或0≤M<1。
  • 指數(shù)E(exponent)是2的冪,它的作用是對(duì)浮點(diǎn)數(shù)加權(quán)。

符號(hào)位 指數(shù)位 小數(shù)位
1位 8位 23位

例如根據(jù)IEEE745,計(jì)算11000001000100000000000000000000的單精度浮點(diǎn)的值。

解題:

1 10000010 00100000000000000000000
符號(hào)位 指數(shù) 尾數(shù)由于指數(shù)不是全部為0 所以小數(shù)位附加1
1 10000010 1.00100000000000000000000
-1 2^(130-127) (2^0 + 2^-3)

結(jié)論:-1 * (2^0 + 2^-3) * 2^(130-127) =-9

同樣,你也可以驗(yàn)證一下十進(jìn)制浮點(diǎn)數(shù)0.1的二進(jìn)制形式是否正確,你會(huì)發(fā)現(xiàn),0.1不能表示為有限個(gè)二進(jìn)制位,因此在內(nèi)存中的表示是舍入(rounding)以后的結(jié)果,即 0x3dcccccd, 十進(jìn)制為0.100000001, 誤差0.000000001由此產(chǎn)生了。

進(jìn)制的概念

我們常用的進(jìn)制有二進(jìn)制、八進(jìn)制、十進(jìn)制和十六進(jìn)制,十進(jìn)制是最主要的表達(dá)形式。

二進(jìn)制是0和1;八進(jìn)制是0-7;十進(jìn)制是0-9;十六進(jìn)制是0-9+A-F(大小寫均可)。

位運(yùn)算符

按位與(&)

兩位全為1,結(jié)果才為1:

0&0=0;
0&1=0;
1&0=0;
1&1=1;

用法:

  • 清零:如果想要一個(gè)單位清零,那么使其全部二進(jìn)制為0,只要與一個(gè)各位都為零的數(shù)值想與,結(jié)果為零。
  • 取一個(gè)數(shù)中指定位:找一個(gè)數(shù),對(duì)應(yīng)X要取的位,該數(shù)的對(duì)應(yīng)位為1,其余位為零,此數(shù)與X進(jìn)行“與運(yùn)算”可以得到X中的指定位。

例如:設(shè)X=1010 1110,取X的低4位,用X & 0000 1111 = 0000 1110 就可以得到。

按位或(|)

只要有一個(gè)為1,結(jié)果就為1:

0|0=0;
0|1=1;
1|0=1;
1|1=1;

用法:常用來對(duì)一個(gè)數(shù)據(jù)的某些位置1;找到一個(gè)數(shù),對(duì)應(yīng)X要置1的位,該數(shù)的對(duì)應(yīng)位為1,其余位為零。此數(shù)與X相或可使X中的某些位置1。

例如:將X=1010 0000 的低四位置1,用X | 0000 1111 =1010 1111 就可以得到。

異或運(yùn)算(^)
*兩個(gè)相應(yīng)位為“異”(值不同),則該位結(jié)果為1,否則為0: *

0^0=0;
0^1=1;
1^0=1;
1^1=0;

用法:

  • 使特定位翻轉(zhuǎn):找一個(gè)數(shù),對(duì)應(yīng)X要翻轉(zhuǎn)的各位,該數(shù)的對(duì)應(yīng)位為1,其余位為零,此數(shù)與X對(duì)應(yīng)位異或就可以得到; 例如:X=1010 1110,使X低4位翻轉(zhuǎn),用X ^ 0000 1111 = 1010 0001就可以得到
  • 與0相異或,保留原值 例如:X ^ 0000 0000 = 1010 1110
  • 兩個(gè)變量交換值的方法: 1、借助第三個(gè)變量來實(shí)現(xiàn): C=A; A=B; B=C; 2、 利用加減法實(shí)現(xiàn)兩個(gè)變量的交換:A=A+B; B=A-B;A=A-B; 3、用位異或運(yùn)算來實(shí)現(xiàn):利用一個(gè)數(shù)異或本身等于0和異或運(yùn)算符合交換律 例如:A = A ^ B; B = A ^ B; A = A ^ B;

取反運(yùn)算(~)

對(duì)于一個(gè)二進(jìn)制數(shù)按位取反,即將0變1,1變0: ~1=0; ~0=1;

左移運(yùn)算(<<)

將一個(gè)運(yùn)算對(duì)象的各二進(jìn)制位全部左移若干位(左邊的二進(jìn)制丟棄,右邊補(bǔ)零) 2<<1 = 4 : 10 <<1 =100=4

若左移時(shí)舍棄的高位不包括1,則每左移一位,相當(dāng)于該數(shù)乘以2。 -14(二進(jìn)制:1111 0010)<< 2= (1100 1000) (高位包括1,不符合規(guī)則)

右移運(yùn)算(>>)

將一個(gè)數(shù)的各二進(jìn)制位全部右移若干位,正數(shù)左補(bǔ)0,負(fù)數(shù)左補(bǔ)1,右邊丟棄。操作數(shù)每右移一位,相當(dāng)于該數(shù)除以2.

左補(bǔ)0 or 補(bǔ)1 得看被移數(shù)是正還是負(fù)。

例:4 >> 2 = 1

例:-14(1111 0010) >> 2 = -4 (1111 1100 )

無符號(hào)右移運(yùn)算(>>>)

各個(gè)位向右移指定的位數(shù)。右移后左邊突出的位用零來填充。移出右邊的位被丟棄

各個(gè)位向右移指定的位數(shù)。右移后左邊突出的位用零來填充。移出右邊的位被丟棄

例如: -14>>>2

即-14(1111 1111 1111 1111 1111 1111 1111 0010)>>> 2

=(0011 1111 1111 1111 1111 1111 1111 1100)

= 1073741820

說明:

  • 0x80000000是數(shù)的十六進(jìn)制表示,轉(zhuǎn)成二進(jìn)制表示為10000000000000000000000000000000
  • 運(yùn)算的優(yōu)先級(jí),移位運(yùn)算高于邏輯運(yùn)算,>>>高于&
  • 位邏輯與運(yùn)算 1&1 = 1 ,0&1 = 0
  • >>>無符號(hào)右移,移出部分舍棄,左邊位補(bǔ)0;

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • java圖片格式轉(zhuǎn)換的三段代碼

    java圖片格式轉(zhuǎn)換的三段代碼

    這篇文章主要分享了java圖片格式轉(zhuǎn)換的三段代碼,小編查找資料整理了java圖片格式轉(zhuǎn)換的三段不同代碼,推薦給大家。
    2015-11-11
  • 解決SpringBoot內(nèi)嵌Tomcat并發(fā)容量的問題

    解決SpringBoot內(nèi)嵌Tomcat并發(fā)容量的問題

    這篇文章主要介紹了解決SpringBoot內(nèi)嵌Tomcat并發(fā)容量的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • java圖片添加水印實(shí)例代碼分享

    java圖片添加水印實(shí)例代碼分享

    這篇文章主要為大家詳細(xì)介紹了java圖片添加水印實(shí)例代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2015-12-12
  • 使用redis的increment()方法實(shí)現(xiàn)計(jì)數(shù)器功能案例

    使用redis的increment()方法實(shí)現(xiàn)計(jì)數(shù)器功能案例

    這篇文章主要介紹了使用redis的increment()方法實(shí)現(xiàn)計(jì)數(shù)器功能案例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • Java框架之Maven SSM集合

    Java框架之Maven SSM集合

    本篇文章主要介紹了基于maven的ssm框架整合的示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2021-09-09
  • springboot Controller直接返回String類型帶來的亂碼問題及解決

    springboot Controller直接返回String類型帶來的亂碼問題及解決

    文章介紹了在Spring Boot中,當(dāng)Controller直接返回String類型時(shí)可能出現(xiàn)的亂碼問題,并提供了解決辦法,通過在`application.yaml`中設(shè)置請(qǐng)求和響應(yīng)的編碼格式,并在自定義配置類中進(jìn)行配置,可以有效解決這一問題
    2024-11-11
  • SpringBoot 集成 activiti的示例代碼

    SpringBoot 集成 activiti的示例代碼

    這篇文章主要介紹了SpringBoot 集成 activiti的示例代碼,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-10-10
  • Java concurrency之公平鎖(二)_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    Java concurrency之公平鎖(二)_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    這篇文章主要為大家詳細(xì)介紹了Java concurrency之公平鎖的第二篇內(nèi)容,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • SparkSQL開窗函數(shù)分析使用示例

    SparkSQL開窗函數(shù)分析使用示例

    開窗函數(shù)的引入是為了既顯示聚集前的數(shù)據(jù),又顯示聚集后的數(shù)據(jù)。即在每一行的最后一列添加聚合函數(shù)的結(jié)果。開窗用于為行定義一個(gè)窗口,它對(duì)一組值進(jìn)行操作,不需要使用 GROUP BY 子句對(duì)數(shù)據(jù)進(jìn)行分組,能夠在同一行中同時(shí)返回基礎(chǔ)行的列和聚合列
    2023-01-01
  • Java RocketMQ 路由注冊(cè)與刪除的實(shí)現(xiàn)

    Java RocketMQ 路由注冊(cè)與刪除的實(shí)現(xiàn)

    這篇文章主要介紹了Java RocketMQ 路由注冊(cè)與刪除的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11

最新評(píng)論

太和县| 闻喜县| 定南县| 怀安县| 洛阳市| 郎溪县| 东明县| 天津市| 竹山县| 河池市| 榆社县| 开鲁县| 乌拉特中旗| 郁南县| 孝义市| 包头市| 乐亭县| 和硕县| 监利县| 三台县| 丘北县| 古丈县| 合水县| 花莲市| 健康| 曲周县| 苍南县| 汪清县| 岐山县| 龙泉市| 乐亭县| 毕节市| 枞阳县| 奇台县| 鄢陵县| 商河县| 福海县| 安龙县| 射阳县| 沽源县| 新乡县|