我們再來看看進制的由來:
任何數據在計算機中都是以二進制的形式存在的。二進制早起是由電信號開頭演變而來。
二進制:逢2進1 ?0和1 ? ??
八進制:逢8時1, 0~7,用0開頭表示 ? ?
十進制:這個我們大家都很熟悉了,0~9 ?
十六進制:逢16進1, 0~15(F),用0x開頭表示我們都知道,一個整數在內存中一樣也是二進制的,那我們在使用一大串1或0組成的數值肯定很麻煩,那么就想到了縮短大串,從而引出了八進制,十六進制。
那么進制之間是怎么轉換的呢?
十進制與二進制之間轉換:
我們可以看一個進制轉換的例子:比如把1101轉換成十進制數
首先我們看看十進制數:765 = 5*10^0 + 6*10^1 + 7*10^2
同理,二進制數 1101 = 1*2^0 + 0*2^1 + 1*2^2 + 1*2^3 = 1+0+4+8 = 13,可以看出1101對應的十進制是13。
我們可以看出二進制轉十進制是乘以2的冪數。
?? ? ? ? ?十進制轉成二進制則要除以2取余。
那么進制之間是怎么轉換的呢?
由于八進制是逢8進1,那么對于二進制來說,八進制中最大數7用二進制表示就是111,同理,十六進制中的15用二進制表示就是1111。
我們很容易看出以下結論:
1.3個二進制位是1個八進制位;
2.4個二進制位是1個十六進制位。
我們再看個例子:有一二進制數 01010110,它對應的八進制數和十六進制數?
求八進制:按三位分:001-010-110 = 0126(記住:八進制以0開頭,同時對于二進制位按3位分的時候高位不夠時補0即可)
求十六進制:按四位分:0101-0110 = 0x56(記住:十六進制以0x開頭,同樣在高位補0)
負數的表現形式:正數的二進制取反,再加1.
我們來看個例子就清楚了:比如我們看-6的二進制,按上面的定義
6的二進制在內存中實際上是 0000-0000 0000-0000 0000-0000 0000-0110(共32位)
我們簡單寫成 ?0000-0110
那么取反之后 ?1111-1001
再加1 ? ? ? ? ? ??+0000-0001
? ? ? ? ? ? ? ? ? -----------------------
? ? ? ? ? ? ? ? ? ? ? ? ? 1111-1010 ?-6
負數的二進制的最高位是1.
- 前言
- 1.1 基本常識
- 1.2 Java語言概述
- 1.3 Java語言的環境搭建
- 1.4 Java程序開發之初體驗--Hello World
- 2.1 關鍵字
- 2.2 標識符
- 2.3 注釋
- 2.4 常量
- 2.5 進制掃盲
- 2.6 變量和數據類型(1)
- 2.7 變量和數據類型(2)
- 2.8 運算符
- 3.1 if語句
- 3.2 switch語句
- 3.3 while和do-while語句
- 3.4 for語句
- 3.5 for循環的嵌套
- 3.6 break語句與continue語句
- 4.1 函數的定義
- 4.2 定義函數的兩個明確
- 4.3 函數的內存加載過程
- 4.4 函數的重載
- 5.1 數組的定義
- 5.2 數組的內存分配及特點
- 5.3 數組操作中常見問題
- 5.4 數組常用操作(1)
- 5.5 數組常用操作(2)
- 5.6 二維數組
- 6.1 面向對象的概述
- 6.2 類與對象的關系
- 6.3 對象的內存體現
- 6.4 成員變量與局部變量
- 6.5 類類型參數與匿名對象
- 6.6 基本數據類型參數與引用數據類型參數的傳遞過程
- 6.7 封裝
- 7.1 構造函數概述與默認構造函數
- 7.2 構造函數與一般函數的區別
- 7.3 構造函數的重載
- 7.4 構造函數的內存加載
- 7.5 構造函數需要注意的幾個細節
- 7.6 this關鍵字的原理
- 7.7 this關鍵字的細節與應用
- 8.1 static關鍵字之特點
- 8.2 成員變量與靜態變量的區別
- 8.3 static關鍵字使用的注意細節
- 8.4 main函數的解析與細節
- 8.5 static關鍵字的使用場景
- 8.6 靜態的內存加載
- 8.7 靜態代碼塊
- 8.8 構造代碼塊
- 9.1 繼承
- 9.2 單繼承與多重繼承
- 9.3 子父類中成員變量特征體現