day19 - 關於進制的轉換與理解補碼的知識

 

  1. #include <stdio.h> 
  2.  
  3. enum WeekDay 
  4.  Sunday,Monday,Tuesday,WednesDay,Thursday,Friday,Saturday,//注意:;   
  5.   
  6. }; 
  7. void show(enum WeekDay); 
  8. int main(void
  9.  enum WeekDay day ; 
  10.  day = Monday; 
  11.  show(day); 
  12.  
  13.  return 0; 
  14.  
  15. void show(enum WeekDay i) 
  16.   switch(i) 
  17.   { 
  18.   case 0: 
  19.   printf("Sunday\n"); 
  20.   break
  21.   case 1: 
  22.   printf("Monday\n"); 
  23.   break
  24.   case 2: 
  25.   printf("Tuesday\n"); 
  26.   break
  27.   case 3: 
  28.   printf("WednesDay\n"); 
  29.   break
  30.   case 4: 
  31.   printf("Thursday\n"); 
  32.   break
  33.   case 5: 
  34.   printf("Friday\n"); 
  35.   break
  36.   case 6: 
  37.   printf("Saturday\n"); 
  38.   break;  
  39.  } 

注意格式

 

進制轉換-------------------------

在彙編語言中

在字母后面加一個b就是代表了二進制
加字母o代表了八進制
加字母d表示十進制代碼
加字母h就代表十六進制代碼


十進制

是個基數,逢十進一
基數 : 0 1 2 3 4 5 6 7 8 9 

二進制
兩個基數  逢二進一
基數: 0 1

2 -->10  3 ->110 

八進制
八個基數:逢八進一
0 1 2 3 4 5 6 7 

十六進制呢
基數:0 1 2 3 4 5 6 7 8 9 A B C D


預備的知識

小數除以大數,則商爲零。餘數是小數的本身..

2 / 3 = 0  ==== 2

十進制轉換成二進制舉例:

185(10)  代表十進制
185/2 = 92 ....1
92/2 = 46.....0
46/2 = 23....0
23/2 = 11....1
11/2 = 5.....1
5/2 = 2.....1
2/2 =1......0
1/2 = 0....1
轉換爲二進制結果爲: 10111001


十進制轉換成八進制又怎麼轉換呢?
185(10) 轉換成八進制
185 / 8 = 23 ... 1
23/8 = 2...7
2 / 8 = 0...2
反轉一次:271(八進制的)、

十進制轉換爲十六進制舉例:
3981(十進制)
3981/16 = 248 ..13
248 / 16 = 15 .. 8
15 /16  = 0 ...15

反轉過來結構爲: F8d(十六進制的結果)


總結:
十進制轉換爲n進制

小數除以大數,則商爲零  餘數等於小數的本身
方法
除r取餘,直到商爲零。餘數倒序排列

練習:
十進制的1000轉換爲十六進制爲多少呢?

計算:
1000/16 = 62 .. 8
62 / 16 = 3...14
3 / 16 = 0 ..3

結果爲: 3e8

 

--------------------
N進制轉換成十進制

123  = 3×1 + 4×10+1×100;

二進制與十六進制的轉換

方法:從右向左,四位一段,分別轉化,不夠四位的補零。

 
首先二進制轉換成十進制   0*2(0)+1*2(1)+1*2(2)+1*2[3] = 14(10)

轉換爲十六進制  2 E(16)

再次鍛鍊一下

11010(2)首先第一步 :每四個分成一段

0001    1010
1       A

十六進制轉換爲二進制

 

 

A1的轉換過程
 


練習:

(D2C)16  ->(?)2  ==
 

注意的內容:
 前面不夠的一定用零去補全。


二進制到八進制的轉換過程

方法:從右向左,三位一段,分別轉化,不夠三位的補零。
  000 101 110

6 5 我們怎麼求
 

 

八進制去轉換爲二進制

27(8) 轉換爲二進制
 

 

不存在十六進制轉換成八進制.都是經轉換爲二進制纔去轉。


還不是很瞭解/但我們明天覆習一點要學習這個。

 

補碼:

原碼

反碼

移碼

補碼
 已知十進制求二進制
 除2取餘,商到零的時候結束。餘數倒序排列

求負整數的二進制
 先求於該負數相對應的二進制代碼,然後將所有位取反,不夠位時,左邊補1./(每4個爲一位。)
-
 

求零的二進制
 全是零

已經知道二進制求十進制

 如果首位是零,則表明是正整數,按普通方法求就可以了
101 
你不是說過首位是1就是負整數嗎?但爲什麼他首位就是1 而不是呢/。  因爲 : 是每4位爲一個字節.那麼4位不夠我們就從上面去補零。

1*2(0)+0*2(1)+1*2(2) = 5 ;//結果


如果首位是1 則表明是負整數(將所有的位取反,末尾加1.所有的數字都是該負數的絕對值。)


1001010       0100 1010
    01001011
--------------------------------------------------------------

今天學習得總體來說是很不錯的.只不過有一個缺點.。
缺點在於什麼地方呢?

 

 缺點就是做作業認真,而看視頻不認真。。。
容易忘記的是比較多。
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章