腦補二進位與十進位的理解
- 2019 年 12 月 9 日
- 筆記
首先了解幾個概念: 1、字(Byte)節是長度單位。位(bit)也是長度單位。
2、基本數據類型 所佔用空間大小:byte b; 1位元組、short s; 2位元組、int i; 4位元組、long l; 8位元組、char c; 2位元組(C語言中是1位元組)、float f; 4位元組、double d; 8位元組、boolean bool; false/true 1位元組
3、因為電腦通訊和存儲的時候都是以010101這樣的二進位數據為基礎的,這兒的一個0和1占的地方就叫bit(位),即一個二進位位。 1Byte=8bit 1KB=1024B 1MB=1024KB(2的十次方)
4、我們常用的進位包括:二進位、八進位、十進位與十六進位,它們之間區別在於數運算時是逢幾進一位。比如二進位是逢2進一位,十進位也就是我們常用的0-9是逢10進一位。可以用補碼相互轉換。
5、為什麼使用補碼進行計算? 在電腦系統中,數值一律用補碼來表示和存儲。原因在於,使用補碼,可以將符號位和數值域統一處理;同時,加法和減法也可以統一處理。此外,補碼與原碼相互轉換,其運算過程是相同的,不需要額外的硬體電路。 補碼的特性:一個負整數(或原碼)與其補數(或補碼)相加,和為模;對一個整數的補碼再求補碼,等於該整數自身;補碼的正零與負零表示方法相同。
6、java里數據類型低精度可以自動轉向高精度,而相反怎需要強制類型轉換,且會丟失精度。 常見例子:byte f=(byte)130 數據130默認是int類型的十進位數據 第一步十進位的130轉換成二進位數據 1 0 0 0 0 0 1 0 第二步130是int類型是佔4個位元組的,所以在記憶體的表現形式是 00000000 00000000 00000000 10000010 做了截取後的結果為 10000010 通過觀察最高位符號位是1,這是一個負數,因為在電腦中所有的數據都是以補碼的形式出現的所以要算它的補碼 原碼:1 0000010 原碼變反碼,最高位符號位不變,其他數值位1變0,0變1得反碼 反碼:1 1111101 反碼變補碼就是反碼加1得 補碼;1 1111110 最終的看到的結果就是 1 1111110最高為是符號位不運算,數值為轉化為十進位是64+32+16+8+4+2=126符號位負 所以為-126