一、補碼簡介 1.電腦中的符號數有三種表示方式,即為:原碼、反碼、補碼。三種表示方法均有符號位和數值位,符號位都是0表示正數,符號位都是1表示負數。 2.電腦中的數字的存儲方式:在電腦系統中,數值一律用補碼來表示和存儲,原因在於:使用補碼可以將符號位和數值域統一處理,同時,加法和減法可以統一處 ...
一、補碼簡介
1.電腦中的符號數有三種表示方式,即為:原碼、反碼、補碼。三種表示方法均有符號位和數值位,符號位都是0表示正數,符號位都是1表示負數。
2.電腦中的數字的存儲方式:在電腦系統中,數值一律用補碼來表示和存儲,原因在於:使用補碼可以將符號位和數值域統一處理,同時,加法和減法可以統一處理
3.補碼的計算方式:兩種情況:
(1)正數的補碼和原碼是相同的
(2)負數的補碼:我們將符號位變為0(也就是說選用負數的正數位),然後所有的數字取反,再加1,我們便得到了負數的補碼(也可以這樣說複數的絕對值對應的二進位碼所有二進位位取反,再加1)
例子:我們連載13中
int i1 = 128; byte i2 = (byte)i1; System.out.print(i2);
i1為:00000000 00000000 00000000 10000000
強制類型轉換後為:100000000
因此這是補碼(電腦存儲的),減1為01111111,再取反10000000這就是128,因為這是負數的,因此為-128
4.總結:當一個整數字面值沒有超出byte\short\char的取值範圍時,這個字面值可以直接賦給byte\short\char類型的變數。這種機制sun公司允許了,目的就是為了方便程式員的編程。
二、精度損失(浮點型數據類型)
1.首先介紹一下
(1)SE類庫位元組碼:C:\Program Files\Java\jdk1.8.0_211\jre\lib\rt.jar
(2)SE類庫源碼:C:\Program Files\Java\jdk1.8.0_211\src.zip
2.在java語言中,所有的浮點型字面值,預設時當作double類型來處理,要想該字面值當作float類型來處理,需要在字面值後面加上f\F
3.註意:double和float在電腦內部的二進位存儲的時候存儲的都是近似值。在現實世界中有些數字是無限迴圈的,在有限的資源里存儲無限的數字都只能時近似值。
double i3 = 23.0; float i4 = 23.0F; System.out.println(i3); System.out.print(i4);
二、源碼:
d14_float_type_and_accuracy_loss.java
地址:https://github.com/ruigege66/Java/blob/master/d14_float_type_and_accuracy_loss.java
2.CSDN:https://blog.csdn.net/weixin_44630050(心悅君兮君不知-睿)
3.博客園:https://www.cnblogs.com/ruigege0000/
4.歡迎關註微信公眾號:傅里葉變換,後臺回覆”禮包“,獲取大數據學習資料