2022年7月14日-汇编如何开始-另类进制转化与运算-我的初阶C第一堂课

目录

  1. 汇编从哪里入手

我们大家都知道,生活中处处都和汇编打交道,我们每天使用的冰箱,电脑,手机都是原先基于汇编写出来的,那么汇编是应该从哪里入手呢?

 我认为开始学汇编应该从电路开始学起!

大家都知道,在出现汇编语言之前所有的机器设备,都是电路开关形成的 ,如图:

 

 学过物理的小伙伴们应该知道,开关有闭合两种状态,我们在为了形象比喻,把开的部分比作0,把关的通电部分比作1.最早人类写程序都是通过这种思路写程序,也就是我们常说的二进制.

 这幅图,利用开关闭合状态我们可以把这幅图理解为电路所要表示的二进制数为01000100,转化为我们所知道的十进制是68

 好了,对于电路形象表示一个数字,大家应该有所了解,那么我们来做一个练习题:

 我的理解为:从上往下电路形成的开闭状态可以用二进制数 01010110来表示86,当然对于如何运算进制互相转化我们可以马上进入到下个目录专题,什么是进制,进制该如何转化的问题?

2.什么是进制,进制该如何转化?

首先我想问问大家,生活中为什么会有数字,那么数字的表示方式有哪些呢?

生活中是离不开数字,因为数字可以对生活的具体事物计算形象化,数字的表示方式有N多种,比如二进制,最常用的十进制,十六进制,N进制....

进制的定义:

十进制的定义:由10个符号组成,分别是0 1 2 3 4 5 6 7 8 9 逢十进一

八进制的定义:由8个符号组成,分别是0 1 2 3 4 5 6 7 逢8进一

十六进制的定义:由16个符号组成,分别是 0 1 2 3 4 5 6 7 8 9 A B C D E F 逢16进一

N进制的定义,由N个符号组成,逢N进一

你了解进制的本质么?

以10进制为准,我们按照进制定义,可以把10进制变成,分别是 9 1 3 4 6 5 8 0 2 7,超过7符号后进位 为 19,或者更变态点我们按以下的符号定义10进制?哈哈

大家是不是有所感悟?换种进制符号是不是还能跟原先的符号来很快的来进行进制运算? 

其实根据这种判定,我们可以根据这种字符来更好的保护我们的数据,放置别人轻易的去破解我们的实际数据含义,比如我规定好按的进制符号,来加解密!大家到这里是不是懂了么!

 计算机和数字的关系?                         

       计算机的任何信息,比如一张图片,一首歌曲,甚至一款游戏都是按照二进制形式来体现,计算机只认识0和1,因为计算机认为受硬件限制,有0和1二进制数字足够。

        这里我把飞鸽软件拖入二进制序列软件中,大家可以直观看看效果图

        

        由于二进制写一段计算机程序比较复杂,往往一个数字需要一大串二级制数字表示,计算机中最小的单位是字节,而一个字节需要8个二进制位来表示,为了简单程序的编写,科学家们把二进制转化为用十六进制来表示,对此0000-1111的表示方法可以显示的状态可以用2^4次方的状态,一共16种状态,对此我们把这16种状态可以用16个字符来表示,称为16进制,分别是                0000→0,0001→1,0010→2;0011→3,0100→4,0101→5,0110→6,0111→7,1000→8,1001→9,1010→A,1011→B,1100→C;1101→D;1110→E;1111→E。

对于这块我感觉我们应该对于这种二进制到16进制转化应该牢记,一眼带过写出十六进制和二进制的互相转化。

那么进制之间如果转化呢,我们按照8进制和10进制互相转化。

十进制230转化为八进制:230/8=28......6     28/8=3......4  4/8=0.....4 对此230转化为八进制为 446

八进制720抓化为十进制  7*8^2+2*8^1+0*8^0=448+16+0=464 

同理 其他进制互相转化也是这样的原理。

进制之间如何运算呢?

        小伙伴们我们在读书的时候是不是会经常被99乘法表么,对啦,其实十进制在我们脑海根深蒂固,主要是这张表格的作用,那么大家想下,1+3我们如果我们没学过加减乘除运算,是不是掰手指头,如果手指头不够呢,我们就要编制99乘法表和加法表。那么我们想过进制之间是否也可以利用这个方法来计算呢,如果你身边没有程序员计算器呢,我们该如何运算,方法如下:

首先我们把80个8进制数字在右边写出来,然后利用excel制作一个8进制加法表,比如 2+6=?我的做法是,根据右边数字,找到2这个数字,从2往右边数6个数字,对此我们找到10这个数字;或者我们可以理解为找到6个数字,往右边数2个数字同样也找到10这个数字。然后把这个加法表填好。 

 这张表涉及到加减乘除,足够可以计算8进制的运算,那么如果是加减乘除呢,我们是不是要编制一个8进制乘法表。

 

乘法表打个比方,如果3*5代表的意思为定位 5这个数字,然后向右边数2*5=10个数字,等于17或者 定位到3这个数字,往右边数4*3=12个数字,同样等于17.小伙伴们明白了么。

我们前面花了大量功夫制作了这2张表格,现在我们要发挥这两张表格的作用,我们来4组题目操作下,认为好用的666。

 277+333 思路:首先7+3查表等于12,进位 1,个位为2;继续7+3 查表等于12 进位1 ;十位2因为个位进位了1所以十位的数字为 3;百位 2+3查表等于 5因为进位所以为6,对此 277+333=632

276*54 思路:首先6*4等于多少,查表等于10所以个位为0,进位3;然后7*4查表等于34因为进位所以十位数为7 进位 3;2*4查表等于10 进位3 等于13  最后得到 1370 在计算第二个数的十位和276逐个相乘,同理得到1666;最后两数位差相加(同样查八进制加法表)得到20250

236-54思路:首先我们看个位 6>4,查表看 4+?=6,最后 查表为2,所以个位为2;十位数 3<5,向上借位得到5+?=13,查表为6,得到十位数应该为6;因为百位借了一位最后为1,结果:162

234/4思路:数显4*?=23,我们来查表,发现乘法表没23这个数,对此根据按最接近23并且小于的原则,查到4*4=20来判断,十位数为4 然后等式还有34未除,我们来判定4*?=34最后我们通过查表找到7,结果为47

现在大家懂了么?

3.我的初阶C

        现在我们来到编程高级语言,这里我只是针对我第一天接触C语言对于C语言知识点的一个巩固,仅仅而已,特别说明因为我第一天接触CSDN,对里面如何编辑还不够熟悉,排版美化做的不好,请小伙伴们谅解!

        计算机的语言有上千种,我选择从C开始学,原因有3个。1.C语言对于小白新手比较和谐,是入门编程的第一首选。2.C语言能更深层的去操作指针,去理解内存。3.有了深层的了解C语言,能更好的去过渡到其他语言,主要C语言是一个过程语言,学好如何去造轮子比起用轮子能够更好的去适应面向对象的语言。

        概念:C语言是一门通用计算机编程语言,泛用于底层开发,C语言设计的目标是提供一种以简易的方式编译,处理低级储存器,产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言

        

 我的理解:我们买来一台电脑,给我们的是看得见摸得着的硬件,电脑通电后,通过底层驱动把操作系统加载到内存中,然后让CPU运行,通过操作系统带动实现硬件的价值,而各种应用层软件(包括操作系统)都是通过编程语言写的,这些应用软件存放在硬件中(磁盘),如果我们运行应用软件,会通过磁盘把他读到内存中去,所以我们常说的运行内存(4G,8G,16G),因为内存的运行速度快,但是内存有个缺点是断电即丢失,所以我们每次打开excel每次都需要保存到磁盘中去,不然断电数据就丢失了。

语言是通过时间的沉淀无限优化的,C语言经历了多个版本,目前稳定的版本主要是C89/C90 C98和C99,具体是看编译器的使用。

我的学习过程中我使用VS2019集成开发环境IDE来写代码,下面是具体的操作:

 

 

 

 

 

 

为什么要写代码?

        解决我们日常的需求,计算机靠CPU运算,处理数据快,能够解决我们日常好多事情,比如微信支付,打游戏,网上商城购物等等,涉及方面太多了。

        写代码能够发散我们的思维和逻辑能力,让我们的使用的程序工具循序有序。

前面我们说了计算机主要是二进制来处理,计算机最小单位为字节,对此计算机中1byte=8bit,1KB=1024byte,1MB=1024KB,1GB=1024MB。。。。

C语言也根据数据不同的大小定义了数据类型,方便存储我们代码的数据。有 char short int  long

longlong float  double 那么这些数据的大小我们在程序中如何知道呢?

        有个函数叫sizeof 可以来判定程序数据类型的大小

生活中我们有太多的事物需要用到以上的数据类型,比如人的身高,年龄,性别,薪资等等。。。

当然这些例子有2种特点,不变的数和变化的数,我们把变化的数称为变量,把不变的数称为常量。具体细节我们后续会详细讲解。

  在写程序中,我这里要用到一些函数程序编译运行,会出现警告,比如scanf,strcpy等等,我们需要在源文件头部加入 #define _CRT_SECURE_NO_WARNINGS 1,这样子就不会警告了,但是每次打开都要加这段话是不是很麻烦,我的做法是打开我的电脑,搜索newc++file字眼,然后找到这个文件,把这段话复制进去,就可以了。

 全局变量和局部变量

 练习代码:

字符串格式 

外部声明变量,内部源文件需要使用,声明外部符号extern关键字 

        首先我们应该定义一个xx.c的文件,把需要使用的外部变量定义到这个文件中

        

 然后再test.c写程序用extern来外部使用 a 变量

 维护gitee

今天我们的代码写完了,我们要维护代码,以后给面试官一个亮点

 

 因为我截图按键冲突我就用文字表述,找到tor开头的小乌龟,然后点击ADD,点击OK,直到提示success

 点击commit本地上传,在message空白处写上备注标题,继续点commit,直到显示SUCCESS,然后再push压入到gitee共享区里,就完成了。


结语 

        我是一名大龄34岁会计人员,我只是对于编程的热爱,我希望把我所学到的一些只是在CSDN博客进行总结,让大家喜欢我。因为水平有限,我会慢慢加强自己的编程知识,一步一个脚印来,欢迎大家关注!

  • 24
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值