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
--------------------------------------------------------------

今天学习得总体来说是很不错的.只不过有一个缺点.。
缺点在于什么地方呢?

 

 缺点就是做作业认真,而看视频不认真。。。
容易忘记的是比较多。
 

你可能感兴趣的:(return,include,void)