目录
计算机由CPU(包括运算器与控制器)、输入设备、输出设备、外部存储器(掉电不丢失)、内部存储器(掉电丢失)组成。
让计算机能够理解并执行的指令即程序。
编程语言从机器能够识别的机器语言发展为与机器语言一一对应的汇编语言,再到高级语言。
由于每种机器的机器码不一样,所以同样的功能在不同的电脑上需要不同的机器语言,因此对应的汇编语言也不一样,导致这两种编程方式的移植性不高。
相比于低级语言,高级语言的移植性更好,但为了简化编程以及提高移植性,高级语言进行了层层嵌套,导致编程效率较低。
高级语言又分为底层C语言,面向对象的C++、C#、Java等以及脚本语言Python等,越底层的语言越简单。
编译过程即将高级语言编译为机器语言的过程。
1.学习单片机的时候了解到,寄存器分为flash、RAM跟ROM,flash为掉电不丢失用来存储数据,RAM负责处理程序掉电丢失,ROM不太记得了,具体与上述的内外部存储器有什么区别与联系;
答案参考下述链接:
2.机器语言由于机器码不一样导致移植性较差,这个机器码不一样是因为每台计算的机器码不一样,还是因为操作系统的原因或者是因为什么导致的;
答案参考下述链接:
机器语言、汇编语言、高级语言_机器语言 汇编语言 高级语言-程序员宅基地
1.计算机组成原理
C语言特性:
效率高、可移植性高、灵活度高
编译型语言过程:
编写代码
源代码统一交给编译器
编译器编译为机器语言,打包成一个可执行文件
将文件交给CPU执行
优点:效率高
缺点:跨平台能力弱,不方便调试
解释型语言过程:
程序交给解释器
解释器每行代码逐一解释成机器语言,CPU一行一行执行
优点:跨平台能力强(通过更换操作系统解释器达到跨平台目的),易于调试
缺点:执行速度慢,程序有修改或BUG需要不停编译
代码可移植性跟跨平台能力的区别在哪?
我的理解为C语言可以通过不同的编译器将源代码编译为想要的机器语言,从而实现各个平台的移植,因此它的代码可移植性高;
解释型语言的程序文本形式存在,本身不需要编译,所以它可以在任何平台上运行,对应的每个平台解释器不一样,所以跨平台能力强。
linux不像Windows有驱动器符号,其所有东西都在根目录下,根目录用 / 表示
linux上的文件名区分大小写
/bin bin是二进制(binary)的缩写
/boot 存放的是系统启动时要用的程序
/dev 包含了linux系统中使用的外部设备
/etc 存放了系统管理时要用的各种配置文件和子目录
/lib 存放系统动态连接共享库
/home 普通用户的主目录,该目录下会有以普通用户用户名命名的文件夹
/root 根用户(超级用户)的主目录
。。。。。。
ps:不同用户的操作权限不同
Linux有七种文件类型:bcd-lsp (编程的-老色匹)
① b:块设备文件 (比如:U盘)
② c:字符设备文件(比如:键盘、鼠标、串口)
③ d:目录文件、文件夹
④ l:链接文件 (相当于windows系统下的快捷方式)
⑤ s:套接字文件(网络通讯)
⑥ p:管道文件 (进程间通信)
⑦ -:普通文件,或者更准确的说,不属于其它几种类型的文件
ctrl + alt + t 打开一个新的终端
ctrl + shift + n 在已经打开终端的基础上,新打开一个同路径的终端
ctrl + shift + t 在已经打开终端内,新起一个同路径窗口
ctrl + l 清屏
输入命令 clear 清屏
输入命令 exit 退出当前命令行终端
鼠标点击Linux虚拟机,鼠标就在Linux中。ctrl + alt,鼠标就回到了windows
whoami命令:查看当前登录的系统的用户名
hostname命令:显示当前系统的主机名
pwd命令用于显示用户在文件系统中的当前位置,命令执行结果显示为绝对路径名
ls -a查看所有类型文件
ls -l查看文件详细信息,ls -l 【文件名】查看某个文件详细信息
文件权限包括:r读,w写,x执行,-无权限
先后顺序分别为:属主,同组用户,其他用户
cd / 返回根目录
cd ~ 返回用户主目录
cd . 原地不动
cd .. 返回上级目录
cd - 返回到上一次的工作目录
cd 回到家目录
cd 【绝对路径】
cd 【相对路径】
用法:touch 【文件名】
新建的文件大小为0,如果新建的文件已存在,则内容不变,只更新文件标签的时间
用法:mkdir 【选项】【目录名】
mkdir 【目录名】【目录名】。。。 同时创建多个目录
mkdir -p 【目录名】需要时创建上层目录,若这些目录存在也不报错,可用于嵌套创建目录
用法:rmdir 【文件名】删除空目录,若目录不为空可以采用rmdir -p 【文件名】进行递归删除
用法:rm 【选项】【文件名】(可同时删除多个)
rm -f强制模式,不提示直接删除
rm -i交互模式,删除前提醒
rm -r默认rm不删除目录,添加-r可删除目录及旗下所有文件和子目录
ps:如果权限不够,可以在命令前添加sudo,获得以此超级用户的权限
作用:复制一个源文件到目标文件(夹)
用法:cp 【选项】 源文件 目标文件(夹)
复制到文件夹时文件名不变,复制到文件时本质是备份文件,所以需要改名,如果命名的文件存在同名文件,则会覆盖其内容。
cp -i交互模式,复制时会提示
cp -r复制文件夹时需要加-r
cp 源文件 源文件 ... 目标文件夹 ,一次复制多个
cp *.后缀 文件夹 ,批量复制同一文件类型的文件到文件夹
作用:剪切一个源文件(夹)到目标文件(夹)(源文件与目标文件(夹)需在一个路径)
用法:mv 源文件(夹) 目标文件(夹)
可以在剪切的过程中进行重命名,如:mv first.c newfirst.c,在同一路径重命名;mv first.c dir1/newfirst.c,剪切到其他文件夹并重新命名
生成一个Windows系统与Linux系统共享的文件夹
常见的数制分为:二进制,八进制,十进制,十六进制
数码为表示数的符号:
二进制:0,1
八进制:0,1,2,3,4,5,6,7
十进制:0,1,2,3,4,5,6,7,8,9
十六进制:0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F
基为数码的个数:
二进制:2
八进制:8
十进制:10
十六进制:16
位权:
每个数码所表示的数值等于该数码乘以一个与数码所在位置相关的 常数(这个常数叫位权)
123 = 1X100 + 2X10 + 3X1 = 1X10² + 2X10 + 3X1
一个数码处在不同位置上所代表的值不同, 比如数字3在个位数位 置上表示3,十位数位置上表示30,在百位数上表示30
位权的大小是以基数为底、数码所在位置的序号为 指数的整数次幂
0x开头代表十六进制
0开头代表8进制
其他进制转换为十进制用上述位权的方法即可
十进制转其他进制
方法:连续除以基,从低到高记录余数,直到商为0
83/8=10..3
10/8=1...2
1/8=0...1
转换成八进制123
二进制转八进制
000-0
001-1
010-2
011-3
100-4
101-5
110-6
111-7
每三位为一组,不够的位数补0,一一对应上述即可
如:1101001->001 101 001->151
八进制转二进制反过来即可
如246->010 100 110->10100110
二进制转十六进制则用四位数去一一对应即可
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-F
%#x输出十六进制数
%u输出无符号十进制数
最小的数据单位为比特(Bit),存储二进制的0或1。
八个最小单位为一个单元,称作字节,一个字节(Byte)为八个Bit
内存以字节为单位进行处理,每个字节都有一个地址,CPU通过访问字节的地址来访问每个字节的空间
1B=8Bit,1Kb=1024B,1M=1024Kb,1G=1024M,1T=1024G
参考下述链接:
今天的课程是C语言基础,之前学过所以大致记一下即可
在32为机器中基本数据类型对应的大小:
字符型char,1字节
短整型short,2字节
整型int,4字节
长整型long,4字节
更长的整型long long,8字节
单精度浮点型float,4字节
双精度浮点型double,8字节
长精度long double,12字节
布尔型_Bool,1字节
void型,4字节
指针,4字节
大写字母转小写+32
字符数字转数字+48
bool不是基本类型
_ Bool 才是基本类型
#define bool _Bool
#define ture 1
#define flase 0
宏定义的bool
额外补充浮点型数据的知识见下面链接:
数据类型转换分为强制类型转换与自动类型转换,自动类型转换又包括赋值操作与二元运算
在对变量赋值时,如果等号右边的表达式值与 左边的变量类型不同,右边的类型将转换为左 边的类型,并且如果右边的数据类型长度比左边的长,就会丢失一部分数据,导致精度降低。
在不同数据类型之间进行二元运算时,也会发生隐士的自动类型转换 。如果参与运算的变量类型不同,会先转换成同一类型再进行计算。如果运算时发生类型转换,就会按数据长度增加的方向进行,从而保证精度不降低。并且所有浮点数参与的运算都以双精度进行,即使表达式中只有float,也会先转为double,再进行计算。
为了确保类型转换按照开发者期望的方式进行,可以明确设置类型转换的方式,这就是强制类型转换。强制类型转换是一种运算符,在需要转换的表达式前添加小括号括起来的新类型名称。
C语言基础以前学过,大致记一下
最基本的操作就是进行各种运算。C语言提供了丰富的运算符:
算术运算符:+、-、 * 、/、%、++、--
关系运算符:>、<、>= 、<=、==、!=、
逻辑运算符:&&(逻辑与)、||(逻辑或)、!(逻辑非)
赋值运算符:
赋值:=
算术复合赋值运算符:+=、-=、*=、/=、%=
位运算复合赋值运算符:<<=、>>=、&=、|=、^=
位运算符:&、|、 ^ 、~、>>、<<
三目运算符:? :
逗号运算符:,
大小运算符:sizeof
其它运算符: [ ] (下标引用操作符)、( ) (函数调用操作符)、(类型)(强制类型转换)&(取地址操作 符)、->(结构成员操作符)
if(a == 5)错写成if(a = 5),也许会出现编译器为报警的情况,将常量写在左边即可避免该错误无法检测出。
根据短路特性,先将a的值赋给c,为0后面的不执行,因此最后a=1,b=-1,c=0,d=4
文章浏览阅读3.2w次,点赞16次,收藏90次。对于这个问题我也是从网上找了很久,终于解决了这个问题。首先遇到这个问题,应该确认虚拟机能不能正常的上网,就需要ping 网关,如果能ping通说明能正常上网,不过首先要用命令route -n来查看自己的网关,如下图:第一行就是默认网关。现在用命令ping 192.168.1.1来看一下结果:然后可以看一下电脑上面百度的ip是多少可以在linux里面ping 这个IP,结果如下:..._linux桥接ping不通baidu
文章浏览阅读512次。小妹在这里已经卡了2-3天了,研究了很多人的文章,除了低版本api 17有成功外,其他的不是channel null 就是没反应 (channel null已解决)拜托各位大大,帮小妹一下,以下是我的程式跟 gradle, 我在这里卡好久又没有人可问(哭)![image](/img/bVcL0Qo)public class MainActivity extends AppCompatActivit..._android 权限申请弹窗 横屏
文章浏览阅读1.4k次,点赞4次,收藏6次。valid padding(有效填充):完全不使用填充。half/same padding(半填充/相同填充):保证输入和输出的feature map尺寸相同。full padding(全填充):在卷积操作过程中,每个像素在每个方向上被访问的次数相同。arbitrary padding(任意填充):人为设定填充。..._cnn “相同填充”(same padding)
文章浏览阅读790次,点赞29次,收藏28次。手绘了下图所示的kafka知识大纲流程图(xmind文件不能上传,导出图片展现),但都可提供源文件给每位爱学习的朋友一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长![外链图片转存中…(img-Qpoc4gOu-1712656009273)][外链图片转存中…(img-bSWbNeGN-1712656009274)]
文章浏览阅读469次。Date对象取得年份有getYear和getFullYear两种方法经 测试var d=new Date;alert(d.getYear())在IE中返回 2009,在Firefox中会返回109。经查询手册,getYear在Firefox下返回的是距1900年1月1日的年份,这是一个过时而不被推荐的方法。而alert(d.getFullYear())在IE和FF中都会返回2009。因此,无论何时都应使用getFullYear来替代getYear方法。例如:2016年用 getFullYea_getyear和getfullyear
文章浏览阅读182次。Unix传奇(上篇) 陈皓 了解过去,我们才能知其然,更知所以然。总结过去,我们才会知道我们明天该如何去规划,该如何去走。在时间的滚轮中,许许多的东西就像流星一样一闪而逝,而有些东西却能经受着时间的考验散发着经久的魅力,让人津津乐道,流传至今。要知道明天怎么去选择,怎么去做,不是盲目地跟从今天各种各样琳琅满目前沿技术,而应该是去 —— 认认真真地了解和回顾历史。 Unix是目前还在存活的操作系_unix传奇pdf
文章浏览阅读308次。哈希算法:将字符串映射为数字形式,十分巧妙,一般运用为进制数,进制据前人经验,一般为131,1331时重复率很低,由于字符串的数字和会很大,所以一般为了方便,一般定义为unsigned long long,爆掉时,即为对 2^64 取模,可以对于任意子序列的值进行映射为数字进而进行判断入门题目链接:AC代码:#include<bits/stdc++.h>using na..._ac算法 哈希
文章浏览阅读952次,点赞13次,收藏27次。由于觉得Qt的编辑界面比较丑,所以想用vs2022的编辑器写Qt加MySQL的项目。_在vs中 如何装qt5sqlmysql模块
文章浏览阅读1k次。选择题题目:下面的哪个调研内容属于经济环境调研?()题目:()的目的就是加强与客户的沟通,它是是网络媒体也是网络营销的最重要特性。题目:4Ps策略中4P是指产品、价格、顾客和促销。题目:网络市场调研是目前最为先进的市场调研手段,没有任何的缺点或不足之处。题目:市场定位的基本参数有题目:市场需求调研可以掌握()等信息。题目:在开展企业网站建设时应做好以下哪几个工作。()题目:对企业网站首页的优化中,一定要注意下面哪几个方面的优化。()题目:()的主要作用是增进顾客关系,提供顾客服务,提升企业_画中画广告之所以能有较高的点击率,主要由于它具有以下特点
文章浏览阅读1k次,点赞2次,收藏5次。以爬取CSDN为例子:第一步:导入请求库第二步:打开请求网址第三步:打印源码import urllib.requestresponse=urllib.request.urlopen("https://www.csdn.net/?spm=1011.2124.3001.5359")print(response.read().decode('utf-8'))结果大概就是这个样子:好的,继续,看看打印的是什么类型的:import urllib.requestresponse=urllib.r_urlopen the read operation timed out
文章浏览阅读304次。修正sina.com/sina.cn邮箱获取不到联系人,并精简修改了其他邮箱代码,以下就是升级版版本的介绍:完整版本,整合了包括读取邮箱通讯录、MSN好友列表的的功能,目前读取邮箱通讯录支持如下邮箱:gmail(Y)、hotmail(Y)、 live(Y)、tom(Y)、yahoo(Y)(有点慢)、 sina(Y)、163(Y)、126(Y)、yeah(Y)、sohu(Y) 读取后可以发送邮件(完..._通讯录 应用读取 邮件 的相关
文章浏览阅读213次。云计算及虚拟化教程学习云计算、虚拟化和计算机网络的基本概念。此视频教程共2.0小时,中英双语字幕,画质清晰无水印,源码附件全课程英文名:Cloud Computing and Virtualization An Introduction百度网盘地址:https://pan.baidu.com/s/1lrak60XOGEqMOI6lXYf6TQ?pwd=ns0j课程介绍:https://www.aihorizon.cn/72云计算:概念、定义、云类型和服务部署模型。虚拟化的概念使用 Type-2 Hyperv_云计算与虚拟化技术 教改