1. 程式人生 > >三 進位制、精度,Java的型別轉換

三 進位制、精度,Java的型別轉換

進位制的表示:

  • 0b010 :  二進位制表示形式:前面+0n
  • 0100  : 八進位制表示形式: 前面+0
  • 0x001 : 16進製表示形式:前面+0x

計算機以補碼的方式進行運算

進位制的轉換:

10進位制轉換成任意進位制: 除基倒取餘,結果從按餘數下往上寫


原反補:

  • 原碼:二進位制定點表示法,最高位為符號位,0為正,1為負,其餘為數值大小
  • 反碼:正數的反碼與原碼相同,負數的反碼對其除符號位之外的原碼逐位取反。
  • 補碼:正數的補碼與其原碼相同,負數的補碼在其反碼的末位+1.

7:  

  • 原碼:0 0000111
  • 反碼: 0 0000111
  • 補碼: 0 0000111

-7:1 0000111

  • 原碼:1 0000111
  • 反碼:1 1111000
  • 補碼:1 1111001

已知原碼求補碼: 先求反碼。 反碼末位+1就是補碼

資料型別:

Java是強型別語言,對於每一種資料都定義了明確的具體資料型別,
在記憶體中分配了不同大小的記憶體空間


整型:

  • byte :  1個位元組  1個位元組8位(二進位制位)  放0和1  2的8次方=256種  -128~127  
  • short:  2個位元組  1個位元組8位 2的16次方     2的-15次方~2的15-1    0~65535
  • int     4個位元組  2的32次方    -2的31~2的31次方-1
  • long:   8個位元組   2的 64次方   -2的63次方~2的63次方-1

浮點型:單精度,雙精度  小數預設雙精度

  • float:  4個位元組  小數預設double  flaot f = 1.1f;
  • double:  八個位元組   2的64位

字元型:

  • char: 兩個位元組  0~65535

布林型:

  • 理論佔1/8個位元組,一個開關就可以決定正負,但java沒有明確指定他的大小

Ex:

byte1個位元組,int4個位元組
當byte和int運算,賦給ints時,byte自動轉化為int(byte前補上3個位00000000 00000000 00000000)
當他們的運算賦給byte時,會報錯,損失精度(int 4變1),所以要強制轉換
byte = byte(int + byte);