亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

java二進制的相關基礎知識有哪些

發布時間:2021-11-20 11:46:48 來源:億速云 閱讀:127 作者:iii 欄目:編程語言

本篇內容主要講解“java二進制的相關基礎知識有哪些”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“java二進制的相關基礎知識有哪些”吧!

說明

任何東西都有規范,提到JAVA就會提到2個規范,JAVA語言規范、JVM規范。JAVA語言規范主要定義JAVA的語法、變量、類型、文法等等,JVM規范主要定義Class文件類型、運行時數據、幀棧、虛擬機的啟動、虛擬機的指令集等等。

JAVA語言規范主要定義什么是JAVA語言。  JVM規范主要定義JVM內部實現,二進制class文件和JVM指令集等。

規范中數字的內部表示和存儲

JAVA八種基本數據類型:

整形:byte,short,int,long  浮點型:float,double  布爾型:boolean  字符型:char  數據類型 所占位數

int      32bit              short      16bit              long      64bit              byte      8bit              char      16bit              float      32bit              double      64bit              boolean      1bit

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

整數的表示

源碼:第一位為符號位(0表示正數,1表示負數)。  反碼:符號位不動,原碼取反。  負數補碼:符號位不動,反碼加1。  正數補碼:和源碼相同。

備注:補碼的好處:

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

補碼可以很好的參與二進制的運算,補碼相加符號位參與運算,這樣就簡單很多了。

浮點數表示

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

我們以float來說明:

IEEE745單精度浮點格式共32位,包含三個構成字段:23位小數f,8位偏置指數e,1位符號s。將這些字段連續存放在一個32位字里,并對其進行編碼。其中0:22位包含23位的小數f; 23:30位包含8位指數e;第31位包含符號s。

一個實數V在IEEE 754標準中可以用V=(-1)s×M×2E 的形式表示,說明如下:

符號s(sign)決定實數是正數(s=0)還是負數(s=1),對數值0的符號位特殊處理。  有效數字M(significand)是二進制小數,M的取值范圍在1≤M<2或0≤M<1。  指數E(exponent)是2的冪,它的作用是對浮點數加權。

1位      8位      23位

例如根據IEEE745,計算11000001000100000000000000000000的單精度浮點的值。

解題:

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

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

同樣,你也可以驗證一下十進制浮點數0.1的二進制形式是否正確,你會發現,0.1不能表示為有限個二進制位,因此在內存中的表示是舍入(rounding)以后的結果,即 0x3dcccccd, 十進制為0.100000001, 誤差0.000000001由此產生了。

進制的概念

我們常用的進制有二進制、八進制、十進制和十六進制,十進制是最主要的表達形式。

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

位運算符

按位與(&)

兩位全為1,結果才為1:

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

數據類型所占位數
符號位指數位小數位
11000001000100000000000000000000

用法:

清零:如果想要一個單位清零,那么使其全部二進制為0,只要與一個各位都為零的數值想與,結果為零。  取一個數中指定位:找一個數,對應X要取的位,該數的對應位為1,其余位為零,此數與X進行“與運算”可以得到X中的指定位。

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

按位或(|)

只要有一個為1,結果就為1:

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

用法:常用來對一個數據的某些位置1;找到一個數,對應X要置1的位,該數的對應位為1,其余位為零。此數與X相或可使X中的某些位置1。

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

異或運算(^)*兩個相應位為“異”(值不同),則該位結果為1,否則為0: *

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

用法:

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

取反運算(~)

對于一個二進制數按位取反,即將0變1,1變0: ~1=0; ~0=1;

左移運算(<<)

將一個運算對象的各二進制位全部左移若干位(左邊的二進制丟棄,右邊補零) 2<<1 = 4 : 10 <<1 =100=4

若左移時舍棄的高位不包括1,則每左移一位,相當于該數乘以2。 -14(二進制:1111 0010)<< 2= (1100 1000) (高位包括1,不符合規則)

右移運算(>>)

將一個數的各二進制位全部右移若干位,正數左補0,負數左補1,右邊丟棄。操作數每右移一位,相當于該數除以2.

左補0 or 補1 得看被移數是正還是負。

例:4 >> 2 = 1

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

無符號右移運算(>>>)

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

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

例如: -14>>>2

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

=(0011 1111 1111 1111 1111 1111 1111 1100)

= 1073741820

說明:

0x80000000是數的十六進制表示,轉成二進制表示為10000000000000000000000000000000  運算的優先級,移位運算高于邏輯運算,>>>高于&  位邏輯與運算 1&1 = 1 ,0&1 = 0  >>>無符號右移,移出部分舍棄,左邊位補0;

到此,相信大家對“java二進制的相關基礎知識有哪些”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

松原市| 平谷区| 肇州县| 景泰县| 兴城市| 德清县| 遂川县| 武义县| 射洪县| 辽阳市| 米林县| 达拉特旗| 水城县| 浮梁县| 共和县| 连云港市| 禄丰县| 红桥区| 乾安县| 东阿县| 固始县| 弥勒县| 论坛| 资讯| 胶州市| 桦甸市| 永清县| 霸州市| 油尖旺区| 芮城县| 临夏市| 巴东县| 广昌县| 明水县| 保亭| 榆林市| 定陶县| 新民市| 雷山县| 磴口县| 郯城县|