目录
计算机由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
文章浏览阅读2.5w次,点赞6次,收藏50次。官方解释是,docker 容器是机器上的沙盒进程,它与主机上的所有其他进程隔离。所以容器只是操作系统中被隔离开来的一个进程,所谓的容器化,其实也只是对操作系统进行欺骗的一种语法糖。_docker菜鸟教程
文章浏览阅读5.7k次,点赞3次,收藏14次。该如何避免的,今天小编给大家推荐两个下载Windows系统官方软件的资源网站,可以杜绝软件捆绑等行为。该站提供了丰富的Windows官方技术资源,比较重要的有MSDN技术资源文档库、官方工具和资源、应用程序、开发人员工具(Visual Studio 、SQLServer等等)、系统镜像、设计人员工具等。总的来说,这两个都是非常优秀的Windows系统镜像资源站,提供了丰富的Windows系统镜像资源,并且保证了资源的纯净和安全性,有需要的朋友可以去了解一下。这个非常实用的资源网站的创建者是国内的一个网友。_msdn我告诉你
文章浏览阅读1.2k次。vue2封装对话框el-dialog组件_
文章浏览阅读4.7k次,点赞5次,收藏6次。MFC 文本框换行 标签: it mfc 文本框1.将Multiline属性设置为True2.换行是使用"\r\n" (宽字符串为L"\r\n")3.如果需要编辑并且按Enter键换行,还要将 Want Return 设置为 True4.如果需要垂直滚动条的话将Vertical Scroll属性设置为True,需要水平滚动条的话将Horizontal Scroll属性设_c++ mfc同一框内输入二行怎么换行
文章浏览阅读832次。检查Linux是否是否开启所需端口,默认为6379,若未打开,将其开启:以root用户执行iptables -I INPUT -p tcp --dport 6379 -j ACCEPT如果还是未能解决,修改redis.conf,修改主机地址:bind 192.168.85.**;然后使用该配置文件,重新启动Redis服务./redis-server redis.conf..._redis-server doesn't support auth command or ismisconfigured. try
文章浏览阅读4.9k次。济大数电实验报告_数据选择器及其应用
文章浏览阅读236次。1研究内容消费在生产中占据十分重要的地位,是生产的最终目的和动力,是保持省内经济稳定快速发展的核心要素。预测河南省社会消费品零售总额,是进行宏观经济调控和消费体制改变创新的基础,是河南省内人民对美好的全面和谐社会的追求的要求,保持河南省经济稳定和可持续发展具有重要意义。本文建立灰色预测模型,利用MATLAB软件,预测出2019年~2023年河南省社会消费品零售总额预测值分别为21881...._灰色预测模型用什么软件
文章浏览阅读1.2k次。12.4-在Qt中使用Log4Qt输出Log文件,看这一篇就足够了一、为啥要使用第三方Log库,而不用平台自带的Log库二、Log4j系列库的功能介绍与基本概念三、Log4Qt库的基本介绍四、将Log4qt组装成为一个单独模块五、使用配置文件的方式配置Log4Qt六、使用代码的方式配置Log4Qt七、在Qt工程中引入Log4Qt库模块的方法八、获取示例中的源代码一、为啥要使用第三方Log库,而不用平台自带的Log库首先要说明的是,在平时开发和调试中开发平台自带的“打印输出”已经足够了。但_log4qt
文章浏览阅读786次。全局观思维模型,一个教我们由点到线,由线到面,再由面到体,不断的放大格局去思考问题的思维模型。_计算机中对于全局观的
文章浏览阅读330次。一、CountDownLatch介绍CountDownLatch采用减法计算;是一个同步辅助工具类和CyclicBarrier类功能类似,允许一个或多个线程等待,直到在其他线程中执行的一组操作完成。二、CountDownLatch俩种应用场景: 场景一:所有线程在等待开始信号(startSignal.await()),主流程发出开始信号通知,既执行startSignal.countDown()方法后;所有线程才开始执行;每个线程执行完发出做完信号,既执行do..._countdownluach于cyclicbarrier的用法
文章浏览阅读508次。Prometheus 算是一个全能型选手,原生支持容器监控,当然监控传统应用也不是吃干饭的,所以就是容器和非容器他都支持,所有的监控系统都具备这个流程,_-自动化监控系统prometheus&grafana实战
文章浏览阅读4.7k次。输入关键字,可以通过键盘的搜索按钮完成搜索功能。_react search