02day(进制转换、输入输出)

一、进制转换

  • 概念理解:在计算机当中存在进制:二进制 八进制 十进制 十六进制
  • 掌握:
二进制转十进制
十进制转二进制
二进制转十六进制  
二进制转八进制  
十进制转八进制   
八进制转十六进制
二进制转十进制:(记住 8421码)
二进制:由0或1组成的数据
十进制:由0~9组成的数据
二进制转十进制方法:记住每一个二进制对应的十进制权位值,将有1的权位值相加即可得到
  • 例子:
 1       1          1          1      1      1      1      1     1     1  --》二进制
 512    256       128         64     32     16       8     4     2     1  --》二进制对应的十进制权位值
  • 十进制转二进制
概念:十进制转二进制方法:将对应的十进制数逐步拆分为二进制权位值,有对应的位,二进制置1即可
例子:
512 256     128  64     32   16     8      4     2     1  十进制
1     1     1     1     1     1     1      1     1      1  二进制
计算:666
首先用 666 -512 = 154
然后 154 - 128 = 26
然后 26 - 16 = 10 
然后 10 - 8 = 2
然后 2 - 2 = 0
结果--》折分的十进制数:512 128 16 8 2 --》二进制:从右向左数,不够位补0--》 0010 1001 1010
  • 二进制转十六进制
二进制    :由0或1组成的数据   10  11  12  13  14  15
十六进制:由0~F组成的数据  0 1 2 3 4 5 6 7 8 9 A   B   C   D   E   F 
二进制转十六进制方法:将二进制从右到左依次按四位分开,最左边若不满足四位,前面补0
,将四位的二进制根据下面对应的关系可算出十六进制
  • 例子:
二进制     :
        0000     0001  0010  0011  0100   0101    0110   0111   1000   1001   1010   1011   1100  1101  1110  1111     
十六进制 :  0       1    2     3    4        5        6      7      8     9     A       B      C    D     E      F  
二进制--》   0001 1101 0010 1101
十六进制--》  1    D    2    D (结果就是:1D2D)
  • 二进制转八进制
二进制:由0或1组成的数据                     
八进制:由0~7组成的数据  0 1 2 3 4 5 6 7 
二进制转八进制方法:将二进制从右到左依次按三位分开,最左边若不满足三位,前面补0
,将三位的二进制根据下面对应的关系可算出八进制
  • 例子:
二进制   :000       001     010    011    100     101    110    111 
八进制   :0          1       2      3      4      5      6       7 
二进制:  101    011   011
八进制:   5      3     3
  • 十进制转八进制
方法:先将十进制转--》二进制--》再转八进制
  • 例子:
十进制:864
二进制:0011 0110 0000
八进制:001  101  100  000 --》八进制结果:1540
  • 八进制转十六进制
方法:先将八进制转--》二进制--》再转十六进制
  • 例子:
八进制:741
二进制 :0001 1110 0001
十六进制 : 1E1

二、输入及输出

  • 输入:scanf()
scanf使用建议
不要在const char *format参数内添加\n
不在const char *format参数内添加相关的符号或者是字符
数据类型格式要与变量类型一致
数据类型格式与变量取地址个数要相同
  • 如何解决%c不匹配上个输入时留下的\n
解决方法,清空缓冲区:
代码:  
while( getchar() != '\n');  //清空缓冲区
ch = getchar():获取缓冲区中的一个字符
  • 例子
1个变量赋值
int num;
scanf("%d", &num); //& -->取变量的内存地址2个变量赋值
int num, num1;
scanf("%d%d", &num, &num1); //& -->取变量的内存地址

给一个字符变量赋值
char a = 65; 65-->A
scanf("%c", &a); //(输入数据格式 ,地址)
char *p  =NULL;
p = &a ;    

通过键盘输入字符串,再输出数据
char buf[15];
scanf("%s", buf); //buf是数组名,它是地址,不需要加&
  • 输出:printf()

i

nt number = 100;
printf("number = %d\n",number);
%d:数据格式
注:每个对应的变量,它输出类型有所不同
可在打印进制时加入#,将进制符号打印出来
  • 例子:
%#o      %#x
0457    0x457       
八进制变量定义
    int var_8 = 0457;  //系统会认为这个是一个八进制数   数据前面加0
    printf("var_8 = %#o\n",var_8);
printf("var_8 = %#x\n",var_8);
常用的数据格式
%c   : 字符类型
%d   : 整型
%s   : 字符串类型
%u   : 无符号类型
%hu  : 无符号短整型类型
%hd  : 短整型  short
%ld  : 长整型
%f   : 浮点型   float
%lf  : 长浮点型 double
%e   : 科学计数型
%o   : 打印八进制
%x   : 打印十六进制
%p   :  打印变量指针地址
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值