学逆向论坛

找回密码
立即注册

只需一步,快速开始

发新帖

670

积分

1

好友

36

主题
发表于 2020-10-29 09:50:43 | 查看: 1984| 回复: 0
本帖最后由 鸦领主 于 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.发广告、灌水回复等违规行为一经发现直接禁言,如果本帖内容涉嫌违规,请点击论坛底部的举报反馈按钮,也可以在【投诉建议】板块发帖举报。

小黑屋|手机版|站务邮箱|学逆向论坛 ( 粤ICP备2021023307号 )|网站地图

GMT+8, 2024-4-27 08:24 , Processed in 0.098932 second(s), 41 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表