查看: 210|回复: 0

[原创图文] 第二天 进制转换 常量表达

[复制链接]

8

主题

16

帖子

0

精华

中级会员

Rank: 8Rank: 8

学币
90
荣耀
0
rank
0
违规
0

    发表于 2020-10-29 09:50:43 | 显示全部楼层 |阅读模式
    本帖最后由 鸦领主 于 2020-11-1 01:12 编辑

    目录


    一、进制转换

        1.二进制

           1)概括

           2)  位数个数

           3)  二进制转十进制

           4)  十进制转二进制

           5)VS实现十进制转换二进制

        2.十进制

           1)概括

           2)十进制转十六进制

           3)十六进制转十进制


    二、C语言常量表达

                  1.概括
                  2.浮点数和整数
                  3.特殊的整数
                     1)常见的字符
                     2)特殊的字符
           三、补充
                  1.VS一些快捷方式
                  2.%d和%f





                    一、进制转换

    本次用到代码:
    #include<stdio.h>
    
    int main()
    {
         int n;
         printf("输入0-15个数字");
         scanf_s("%d",&n);
         printf("%d",n/2/2/2%2);
         printf("%d",n/2/2%2);
         printf("%d",n/2%2);
         printf("%d",n%2);
    
         return 0;
    }




    二进制

    1.概括:
    1)二进制每增加一个位数,表达的数字个数乘2;

    2)二进制每2进1,4位数2进制表达的是0到15之间的数字

    3)二进制尾部每加一个0相当于这个数字乘以2(0010=二的一次方(2),00100等于二的二次方(4),001000等于二的3次方(8)


    2.位数个数:
    1位数表达2个数字: 0 ,1
    2位数表达4个数字:00 01 10 11
    3位数表达8个数字: 000 001 010 011 100 101 110 111
    4位数表达16个数字: 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111
    32位数表达4294967296 ( 4G)个字数

    3.将2进制转为10进制的方法:每一位数字乘以对应的倍数
    (从右到左1      0    1    0   1   0   1   0   1 =1*256+0*128+1*64+0*32+1*16+0*8+1*4+0*2+1=(101010101=341)
                
    256 128 64 32 16   8   4   2   1就这样以此类推)


    1001 =1*8+0*4 +0*2 + 1 =8+1=9;                  9+1 =>1010

    1011 = 1*8+0*4+1*2+1=> 8+2+1= 11;       11+1 =>1100

    1111 =1*8+1*4+1*2+1 = 8+4+2+1 =15 ;    15+1 =>10000

    11111 =1*16+1*8+1*4+1x2+1 = 31;            31+1 =>100000


    4.将10进制转为2进制的方法:除以2得余数(% 取余运算符,就是算除法取余数的功能)

    20=10100                                      128=10000000                                                   53=110101        

    20/2=10 余0                                  128/2=64    0                                                      53/2=26    1                                    
    10/2=5   余0                                   64/2=32     0                                                      26/2=13    0
    5/2=2     余1                                   32/2=16     0                                                      13/2=6      1   (1   1   0 1 0 1
    2/2=1     余0                                   16/2=8       0                                                       6/2=3       0      32 16 8 4 2 1    32+16+4+1=53)
    1/2=0     余1                                    8/2=4        0                                                       3/2=1       1
    从下往上写就是10100                       4/2=2        0                                                       1/2=0       1;
    1  0  1   0   0                                     2/2=1        0                                                       得出110101            
    16 8  4   2   1 , 16+4=20                  1/2=0        1   从下写得出10000000(128)




    5.在VS里面实现10进制转为2进制的方法

    第二天 进制转换

    第二天 进制转换


    第二天 进制转换

    第二天 进制转换

    4个printf可以表示16个十进制,5个printf可以表示32个十进制依次进行,32个printf可以表示4294967296个十进制(4G)(printf就相当于位数



    十六进制


    1.概括
    2、十六进制: 0-9 ABCDEF(A=10 B=11 C=12 D=13 E=14 F=15)
    1)一个二进制数(1个晶体) : bit, 例如: 32位就是32个晶体能表达0到4G的
    2)4个二进制数(4个晶体)。表达一 个0-15之间的数字,也就是一个16进制数
    3)每个十六进制数字的位都是跟4个二进制的是等价的关系;




    2.十进制转换十六进制

    15=x0F(0代表0个16,右边的F代表的是15)


    16=x10(1就等于是1个16了,0就代表0)


    32=x20(2就等于是2个16了,0就代表0


    48=x30(3就等于是3个16了,0就代表0


    49=x313就等于是3个16了,1就代表1)3*16+1=49


    50=x323就等于是3个16,2就代表2)3x16+2=50


    125=x7D(7就等于是7个16,D就代表137*16+13=125


    213=xD5D就等于是13个16,5就代表5) 13*16+5=213


    255=xFF(F就等于是15个16,F就代表15) 15*16+15=255

    可以自己用计算器试一下


    3.十六进制转换二进制


    x0F=0000 1111(看x后面的数字左边是对应二进制左边对应的,右边的数字对应二进制右边的
    x59=0101 1001  (5为0101 9为1001)
    xD6=1101 0110   (D是13为1101 6为0110)
    xFF=1111 1111 (F是15为1111 F是15为1111)


    可以自己转换一下试试






    二、C语言常量表达

    1.概括


    C语言的常量包括:整数常量、浮点数常量、字符常量和字符串常量

    2.按照小数点划分:浮点数和整数

    1)有俩种浮点数表达式:
    单精度表达式(变量类型:float):622.00f (32位。整数16位,小数16位,优先给整数用,用的太多的话小数就没的用了就会显示0000,不会显示本来的数字)
    双精度表达式(变量类型:double):655.665(64位。整数占32位,小数占32位,显示小数点后面数字)



    2)有三种整数表达式(按照进制):
    十进制:就是普通的十进制
    十六进制:0x开头的就是十六进制
    八进制(不常用):0开头的 列入0100就是八进制的64

    3.特殊的整数表达式(‘字符’表达式):
    包括:符号、大小写的字母、数字以及一些

    1)常见的字符(ASCII)编码表
    48-57=0-9
    65-90=A-Z
    97-122=a-z
    #include<stdio.h>
    
    int main()
    {
            int i = 'A';     //记得加单引号
            printf("%d",i );
    
            return 0;
    }

    第二天 进制转换 常量表达

    第二天 进制转换 常量表达


    #include<stdio.h>
    
    int main()
    {
            
            printf("%d %d %d",‘5’‘H’‘g’ ); //记得加单引号
    
            return 0;
    }



    第二天 进制转换 常量表达

    第二天 进制转换 常量表达


    常见的字符请百度参见ASCII编码表对照


    2)特殊的字符

    第二天 进制转换 常量表达

    第二天 进制转换 常量表达

    用法

    第二天 进制转换 常量表达

    第二天 进制转换 常量表达













    补充

    VS一些快捷键:

    选中一行从头到尾或s者从尾到头:shift+end/home
    选中多一行shift+向上建/向下键
    剪切:shift+Delete
    粘贴:shift+Insert
    ==================
    %d (decimal): 十进制有符号整数输出输入
    %f  (float): 浮点数


    温馨提示:
    1.如果您喜欢这篇帖子,请给作者点赞评分,点赞会增加帖子的热度,评分会给作者加学币。(评分不会扣掉您的积分,系统每天都会重置您的评分额度)。
    2.回复帖子不仅是对作者的最好奖励,还可以获得学币奖励,请尊重作者的劳动成果,拒绝做伸手党!
    3.发广告、灌水回复等违规行为一经发现直接禁言,如果本帖内容涉嫌违规,请点击论坛底部的举报反馈按钮,也可以在【投诉建议】板块发帖举报。
    学逆向论坛-免费的逆向学习论坛
    微信公众号
    快速回复 返回顶部 返回列表