二進位制詳解

2021-08-20 23:14:49 字數 2451 閱讀 7908

在計算機的世界裡,只有0和1,也就是二進位制。

那如何把乙個十進位制的數轉成二進位制或者其他進製,請下圖:

十進位制轉二進位制

十進位制的123轉成二進位制就是1111011,轉成幾進製都是乙個道理。

一、二進位制

1.1 二進位制是計算機採用的表示數字的方式, 每個數字上只有0和1;

1.2 任何整數一定可以採用二進位制的方式表示, 小數的二進位制這裡不多說;

1.3 位元組內部採用二進位制方式記錄數字, 乙個位元組分成八段, 每個分段有乙個編號, 最右邊分段編號是0, 向左逐漸遞增

1.4 相鄰分段之間有2倍關係, 某個分段的數字相當於2的編號次方, 如圖:

二進位制轉十進位制:

把每個數字單獨轉換後把所有的轉換結果求和

例:01001110 = 2^6 + 2^3 + 2^2 + 2^1 = 64 + 8 + 4 + 2 = 78

十進位制轉二進位制:

方法一:(不適用於處理大數字)先把十進位制數字拆分成多個2的整數次方之和, 然後對每個結果單獨轉換, 最後其他數字補0。

59 = 32 + 16 + 8 + 2 + 1 = 2^5 + 2^4 + 2^3 + 2^1 + 2^0 = 00111011

方法二:除2取餘, 逆序餘數;

上述兩種方法算出來的是二進位制原碼

計算機位元組裡採用二進位制補碼記錄數字

所有非負數整數, 補碼和原碼一樣

二、八進位制

2.1 把二進位制表示方式的所有數字從右向左每三個數字分成一組, 每組用乙個0到7之間的數字代替可得到八進位制表示方式

2.2 每三個數字可以採用421方法把二進位制轉化成八進位制

2.3 可以在程式中使用八進位制表示數字, 為了避免與十進位制混淆, 需要在八進位制前面加0(零)

2.4 %o可以作為八進位制數的佔位符

結果:152 106

152 152

三、十六進製制

3.1 所有數字從右向左每四個數字分成一組, 每組用乙個字母替換就得到對應的十六進製制表示方式, 先把每組轉換成十進位制, 轉換結果如果在0到9之間則用阿拉伯數字字元替換, 否則用『a』到'f'這六個英文本母替換

3.2 每四個數字可以採用8421方法把二進位制轉化成十六進製制

3.2 可以在程式中使用十六進製制表示數字, 但是必須以0x做開頭

3.3 %x %x 可以作為十六進製制數的佔位符(%x輸出a-f, %x輸出a-f)

練習: 十進位制轉二進位制

四、負數的二進位制

4.1 先計算出相反非負數的二進位制

4.2 把第一步的計算結果每個數字變成相反內容, 然後再加一

求:-5的二進位制:

5: 0000 0101

取反: 1111 1010 + 1

-5: 1111 1011

4.3 上述方法算出來的是二進位制補碼, 可以直接記錄在位元組中

4.4 有符號的二進位制補碼中最左邊的數字叫做符號位, 符號位是0表示正, 1表示負, 且符號位不能等同與正負號

4.5 當把乙個占地大的整數型別資料賦值給占地小的整數型別儲存區時只會保留部分二進位制資料, 因此導致十進位制表示方式發生變化。

4.6 當把乙個占地小的整數賦值給占地大的整數型別儲存區時要擴充二進位制數字, 在有符號位的情況下擴充出來的二進位制裡全是符號位的數值, 無符號資料填充0;

分析:300是整數佔四個位元組, 用二進位制表示如下(ps: 只保留最右邊的)

00000000 00000000 00000001 00101100

練習:計算下面的結果(結果在下方)

二進位制 二進位制起源

現代通訊技術的基礎是二進位制編碼。早在1865年麥克斯韋總結出麥克斯韋方程組之前,美國人摩斯 morse 於1837年發明了摩斯電碼和有線電報。有線電報的出現,具有劃時代的意義 它讓人類獲得了一種全新的資訊傳遞方式,這種方式 看不見 摸不著 聽不到 完全不同於以往的信件 旗語 號角 烽火,這也是二進...

詳解二進位制補碼

過去學計算機組成原理時一直沒有搞明白補碼的意義,今天聽了王紅老師的數字電子基礎課才了解到,慚愧!在正文開始之前,首先要明確兩個概念,就是數制和碼制,比如下面這個數字 100832帶符號二進位制的運算依賴於補碼,如 5 0 0101 5 1 0101最高位為0則為正,為1則為負。正常來講我們將其相加應...

判斷二進位製半整數(二進位制)

10年後,tokitsukaze大佬已經變成了年收入超百萬的的精英程式設計師,家裡沒錢也沒礦的teitoku,找tokitsukaze大佬借1000塊錢,然後tokitsukaze大佬說,借你1024吧,湊個整數。沒錯在2進製下1024是 二進位制整數 乙個正整數滿足其值為2的k次方 k為正整數 我...