目录
计算机由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.1k次。FX3 JLINK调试是一个有些麻烦的事情,经常有些莫名其妙的问题。 设置参见 c:\Program Files (x86)\Cypress\EZ-USB FX3 SDK\1.3\doc\firmware 下的 EzUsbSuite_UG.pdf 文档。 常见问题: 1.装了多个版本的jlink,使用了未注册或不适当的版本 选择一个正确的版本。JLinkARM_V408l,JLinkA_ezusbsuite_qsg.pdf
文章浏览阅读2.6k次。** 本文仅通过用openGL+QT简单实现二进制stl文件读取显示并通过鼠标旋转缩放, 是比较入门的级别,由于个人能力有限,新手级别,所以未能施加光影灯光等操作, 未能让显示的stl文件更加真实。****效果图:**1. main.cpp```cpp#include "widget.h"#include <QApplication>int main(int argc, char *argv[]){ QApplication a(argc, argv); _qopengl如何鼠标控制旋转
文章浏览阅读943次,点赞22次,收藏19次。以大规模预训练语言模型为基础的chatgpt成功出圈,在近几日已经给人工智能板块带来了多次涨停,这足够说明这一风口的到来。而作为曾经的风口“知识图谱”而言,如何找到其与chatgpt之间的区别,找好自身的定位显得尤为重要。形式化知识和参数化知识在表现形式上一直都是大家考虑的问题,两种技术都应该有自己的定位与价值所在。知识图谱构建往往是抽取式的,而且往往包含一系列知识冲突检测、消解过程,整个过程都能溯源。以这样的知识作为输入,能在相当程度上解决当前ChatGPT的事实谬误问题,并具有可解释性。
文章浏览阅读1.3k次。最重要的一点,一定是degbug的方式启动,不然热部署不会生效,注意,注意!_tomcat热部署
文章浏览阅读10w+次,点赞56次,收藏482次。html5 ,用css去修饰自己的个人主页代码如下:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xh..._个人主页源码
文章浏览阅读201次。开发者(KaiFaX)面向全栈工程师的开发者专注于前端、Java/Python/Go/PHP的技术社区来源:开源最前线链接:https://github.com/svenstaro/gen..._程序员怎么上班摸鱼
文章浏览阅读1.3k次。改变Block UI界面的尺寸_ug二次开发 调整 对话框大小
文章浏览阅读1.3w次,点赞18次,收藏291次。基于深度学习的股票预测数据获取数据转换LSTM模型搭建训练模型预测结果数据获取采用tushare的数据接口(不知道tushare的筒子们自行百度一下,简而言之其免费提供各类金融数据 , 助力智能投资与创新型投资。)python可以直接使用pip安装tushare!pip install tushareCollecting tushare Downloading https://files.pythonhosted.org/packages/17/76/dc6784a1c07ec040e74_基于深度学习的股票操纵识别研究python代码
文章浏览阅读2k次。【IT168 厂商动态】 近日,北京中科网威(NETPOWER)工业级防火墙通过了中国电力工业电力设备及仪表质量检验测试中心(厂站自动化及远动)测试,并成为中国首家通过电力协议访问控制专业测评的工业级防火墙生产厂商。 北京中科网威(NETPOWER)工业级防火墙专为工业及恶劣环境下的网络安全需求而设计,它采用了非X86的高可靠嵌入式处理器并采用无风扇设计,整机功耗不到22W,具备极_电力行业防火墙有哪些
文章浏览阅读206次。/*烟台大学计算机学院 作者:董玉祥 完成日期: 2017 12 3 问题描述:二叉树排序树中查找的路径 */#include #include #define MaxSize 100typedef int KeyType; //定义关键字类型typedef char InfoType;typedef struct node
文章浏览阅读775次。当时老师一定会告诉你,这个一个"warning"的报警,可以不用管它,也确实如此。不过,这条报警信息我们至少可以知道一点,就是scanf函数调用完之后是有一个返回值的,下面我们就要对scanf返回值进行详细的讨论。并给出在编程时利用scanf的返回值可以实现的一些功能。_c语言ignoring return value
文章浏览阅读9.6k次。十四五规划下,数据安全成为国家、社会发展面临的重要议题,《数据安全法》《个人信息保护法》《关键信息基础设施安全保护条例》已陆续施行。如何做好“数据安全建设”是数字时代的必答题。_数字医疗服务保障方案