C語言中的二進位制 八進位制 十進位制 十六進製制

2021-07-27 08:01:36 字數 1617 閱讀 3916

乙個位元組分成八段,每段只能記錄乙個0或者1

要想把乙個數字記錄在乙個位元組中,就必須首先把這個

數字拆分成八個0或者1

採用一組0和1表示數字的方法叫做二進位制

二進位制表示方式中,每個位置有乙個編號,最右邊位置的

編號是0,向左以此遞增

某個位置上的1代表的數字是2的位置編號次方

在二進位制表示方式中,如果兩個相鄰位置上的內容一樣,

則左邊的數字是右邊數字的2倍

(以上規則只適用於用二進位制表示的非負數)

二進位制數字加1時,把最右邊的所有1都變成0,把最右邊的0變成1

不停對數字除以2保留整數部分的操作,得到一組數字,其中每個數字在作除以2取餘得到每個數字上的內容。把所有餘數按找從後向前倒敘書寫就得到轉換結果。

負數十進位制轉換為二進位制

1.得到負數的相反數

2.把第一步的結果轉換成二進位制

3.把第二步每個數字上的內容變成相反值

4.把第三步的結果加1

採用按位求反再加1的方法可以根據任何二進位制數計算出相反的二進位制數

有符號型別二進位制最左邊的數字叫做符號位

根據它可以知道數字的正負,如果符號位是0則數字是非負數,

如果符號位是1則數字是負數

負數的二進位制轉換成十進位制

1.首先計算出相反數的二進位制

2.把第一步的結果轉換成十進位制

3.根據第二步的結果再計算相反數

當把占地大的整數賦值給占地小的整數型別儲存區的時候,只保留最後的二進位制數字,這將導致資料丟失

當把占地小的有符號型別整數賦值給占地大的整數型別儲存區時,擴充套件出來的二進位制數字填充的都是符號位(不僅第一位是符號位,擴充套件出來的位數都是符號位)這樣會保持十進位制結果不變

,有規律:a=定+b

其中:a:補碼對應的無符號數

b:負數值

定:假設資料用8位元表示,則「定」為28=256

例如:-1的補碼表示為a=定+b=256-1=255,即11111111

-128的補碼表示為a=定+b=256-128=128,即10000000

顯然,也可以由補碼值得出表示的負數值,b=a-定

11111111對應的負數值是b=255-256=-1

把二進位制從右向左每三個數字分成一組,每組用0到7之間的乙個數字替代

這個結果叫做數字的八進位制表示方式

二進位制與八進位制之間的轉換沒有正負之說,也就是說它們的轉換規則是一樣的

可以在程式中直接使用八進位制方式表示數字,但必須以0(數字0)作為開頭

也就是說0之後才是表示的八進位制數字

可以採用%o(字母o)作為佔位符,把數字的八進位制表示方式列印在螢幕上

把二進位制數字從右向左每四個數字分成一組,每組用乙個字元替換

(用a到f這六個字母代表10到15)

可以在程式中使用十六進製制方式表示數字,必須以0x(數字0,字母x)作為開頭

可以用%x或者%x做佔位符把十六進製制表示方式列印在螢幕上

列印結果不是以0x作為開頭的,為了避免和十進位制表示的數字衝突,我們可以

自己將0x加在列印結果的開頭

以%x作為佔位符時,列印結果中英文本母都是小寫的

以%x作為佔位符時,列印結果中英文本母都是大寫的

十進位制,二進位制,八進位制

發現很多人不懂十進位制 二進位制 八進位制等相互轉化的原理。在此我簡單的寫一下 php中有decbin 用於十進位制轉化二進位制,原理是什麼?我舉例說明一下 33的二進位制是多少?首先你必須明白。二進位制是只出現0101這樣的,33的二進位制是什麼呢?33除以2等於16餘數1,得到的1即為33二進位...

二進位制 八進位制 八進位制 十進位制 十六進製制的介紹

數字在計算機中表現的方式常見的有四種 十進位制 二進位制 八進位制 十六進製制 1.十進位制 1 基數 0,1,2,3,4,5,6,7,8,9 2 進製 逢10進1 3 位權 10的n次方 n從低位到高位從0開始一次增加 1231 110 3 210 2 310 1 110 0 4 程式中的表示方式...

二進位制 八進位制 十進位制 十六進製制之間進行相互轉換

coding utf 8 created on 2015年5月28日 二進位制 八進位制 十進位制 十六進製制之間進行相互轉換 class nsc hex num num hex 二進位制轉十進位制 def bin2dec self,num 根據二進位制的位數來計算 result 0 for i i...