国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - 一些java二進制的相關基礎知識

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

2019-06-27 17:07匠心零度 Java教程

這篇文章主要介紹了一些java二進制的相關基礎知識,在Java語言中byte代表最小計量單位,byte由8位2進制數組成。,需要的朋友可以參考下

說明

任何東西都有規范,提到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)

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

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

整數的表示

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

備注:補碼的好處:

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

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

浮點數表示

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

我們以float來說明:

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

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

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

一個實數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的單精度浮點的值。

解題:

 

1 10000010 00100000000000000000000
符號位 指數 尾數由于指數不是全部為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;

用法:

  • 清零:如果想要一個單位清零,那么使其全部二進制為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;

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产欧美日本 | 国产精品国产三级国产aⅴ原创 | 国产日韩欧美精品 | 免费午夜在线视频 | 成人深夜在线观看 | 日韩有码在线播放 | 亚洲久久久 | 天天爱天天草 | 69久久夜色精品国产69乱www | 久久婷婷色 | 欧美成人精品一区二区 | 中国精品一区二区 | 久久精品国产一区二区电影 | 日本a视频在线观看 | 国产美女在线观看 | 精品久久久久久久人人人人传媒 | 日韩中文字幕在线观看视频 | 午夜视频在线免费观看 | www,99热| 毛片一级在线观看 | 亚洲国产精品福利 | 韩国成人精品a∨在线观看 欧美精品综合 | 中文字幕亚洲精品 | 久久精品小视频 | 亚洲视频一区二区三区在线观看 | av7777 | 一区二区三区精品视频 | 天堂一区二区三区在线 | 日本欧美在线 | 国产精品2 | 日韩看片 | 69久久| 伊人网网站 | 999精品| 欧美日韩国产精品 | 国产精品国产 | 久久久成人精品 | 午夜视频免费在线观看 | 亚洲精品久久久久久久久久久 | 成人日韩在线观看 | 国产欧美综合视频 |