整型在内存中的存储 原反补与大小端

作者的话

本文介绍整型在计算机中的以什么样的方式存储,包括“三码”相关知识、截断与提升相关知识、大小端存储相关知识~

* * *

整型在内存的存储

计算机是一种电器,而电荷只有正电荷负电荷之分,因此,任何数据在计算机中只能以二进制存储,即0和1的组合

而在计算机中,整型有三种二进制表示方式,这三种存储方式的名字分别是原码、反码、补码。

三种方式均分为符号位和数值位,从左数第一位是符号位其余位数值位,像这样

上图是一个32位整型的例子,符号位是1,则这个数是负数;符号位是0,则这个数是正数

unsigned与signed

然而,并不是所有的整型都有符号位。

unsigned开头的数据类型就是无符号位类型,比如unsigned int、unsigned short int、unsigned char,这三种。

对于这三种类型来说,他们的符号位和数值位一样,都代表着数据的大小,因此,这三种数据类型也没有正负之分,他们只可能是正数

比如说:signed char的范围是-128 ~ 127,而unsigned char,因为多了一位做数值位,所以数据的上限要翻一倍,故unsigned char的取值范围是0 ~ 255。

原码反码与补码

刚才我们说到,整型在计算机中有三种二进制存储形式,分别是原码,反码,补码

对于正数、unsigned型的数来说,原码反码补码完全相同,即这三者的书写方式一模一样。

但对于负数来说,这三者各不相同,转换规则如下:

原码符号位不变,其他位取反,就成了反码。 反码+1,即是补码。 例如: -119的原码:10000000000000000000000001110111 -119的反码:01111111111111111111111111111001000 -119的补码:01111111111111111111111111111001001

由此可见:

  • 原码就是数据按照大小翻译成二进制,再看类型和正负决定符号位。
  • 原码与反码的转换过程相同,即原码取反+1后是补码,补码取反+1后又变成了原码。

计算机内的存储       

虽然二进制有三种表示方式,但在计算机中,总是以补码的方式保存。

原因如下:

  1. CPU只有加法器,用补码存储可以无视符号位与数值位的区别,把他们两个放在一起计算。
  2. 刚才说原码和补码的转换方式相同,这样可以节省硬件电路的复杂度。

计算机存储过程 

所谓过程,就是如何把这个数据放进计算机里面。

如果每种整型类型对应放置每种整型数据,那自然没什么好说的。

但是如果类型不同,就会发生截断

截断:

超出某类型范围的数据放入该类型空间时,只保留一部分,像这样:

signed char的范围是-128~127。

如果我偏要把128放进去,然后打印,会发生什么?

 打印的结果居然是-128 其原因就是在放入数据和取出数据的时候分别发生了截断和提升。

详解:

128的原码:00000000000000000000000010000000 128的补码:011111111111111111111111111110000000 因为a是1个字节,一个字节占8个bit位,所以从低位截出8位来。 截完以后a的内部:10000000 这就是截断,记住从操作系统从低位开始截,而且截的是补码。 a提升后的补码:11111111111111111111111110000000 a提升后的原码:10000000000000000000010000000 这一串翻译成十进制就是-128

整型如何提升

整型提升,用一句话说就是占用空间小于4个字节的数据类型,在使用时要先转换成至少为4个字节的int类型后,才能使用。

至于提升的方法,一共有两种,对于有符号数(signed)来说,按符号位提升;对于无符号数(unsigned)来说,无脑补0,像这样:

char a=0b10000000;
unsigned char b=0b11110000;

补完以后:

a:11111111111111111111111110000000

b:00000000000000000000000011110000

大小端存储

  • 大端字节序存储模式,简称大端模式,是指数据的低位字节保存在内存的高位处

<!---->

  • 小端字节序存储模式,简称小端模式,是指数据的低位字节保存在内存的低处

下面演示一个小端字节序的存储,像这样:

 上图可以看到,a的低位地址(0x00EFFB94),存储的是数据的低位字节;a的高位地址(0x00EFFB97),存储的是数据的高位字节。

注意:一个内存单元的大小是一个字节,因此,大小端存储的单位也是一个字节。

存在意义

我们知道,一个内存单元的大小是1个字节,但除了char类型,其他数据的占用空间大小都在1个字节以上,想要把一个数据的每个字节都放在一起,排列的顺序自然就成了一个问题。

历史遗留:

据说灵感来自格列佛游记,在格列佛游记中有一个小人国,有一个大人国,有一天大人国送了小人国一个鸡蛋,小人国的国王就在想,是从鸡蛋大的那一头开始剥,还是从小的那一头开始呢?

于是就有了大小端的说法,不同的模式没有优劣之分,只是选择不同。

如何分辨

当前我们常用的x86机器,采用的是小端存储模式,那么:

如何设计一个程序,可视化地判断当前环境是大端存储还是小端存储呢?

我们知道,计算机读取数据总是从低位开始读取,那么我们只需要令一个占用空间大于1个字节的变量存储一个小于1个字节的数据,然后利用指针类型的特性读取这一个字节就可以了,像这样:

int main()
{
	short a = 0x0001;	
    char* p = (char*)&a;

	printf("%d", *p);

	return 0;
}

short型数据占两个字节,我们以char类型的指针读取其中的低位第一个字节,查看打印的数字是0还是1即可。

效果图:

可以看到,打印结果是1,符合我当前的小端机器。 

都看到这了,留下你的关注吧~

本文转载于网络 如有侵权请联系删除

相关文章

  • cglib代理[通俗易懂]

    大家好,又见面了,我是你们的朋友全栈君。cglib代理​在此之前,我们学习了JDK动态代理,而JDK动态代理有一定的局限性,因为使用JDK动态代理时,被代理类必须实现接口,然后动态代理生成的代理类同时实现该接口实现代理模式,但在特定情况下没办法让被代理类实现接口,那么此时我们就需要使用cglib代理。代理模式的三要素两个成员:被代理对象、执行者(类似于Spring中切面的概念)使用场景:当某件事情不方便自己做,但是必须要做时使用代理模式。代理对象持有被代理对象的引用。​在第一点中,执行者指的是代理对象的执行模板,例如在JDK动态代理中,实现InvocationHandler接口的类就是代理类中方法的执行模板。而在cglib代理中执行模板需要实现MethodInterceptor。使用cglib需要做的准备JDK动态代理由于是JDK自带的,所以我们不需要在项目中引入第三方jar,但是cglib需要引入两个jar包: cglib代理具体实例创建被代理类package_6代理模式.CGlib代理; publicclassUserService{ publicvoidaddUser(){

  • kubernetes(k8s)安装命令行自动补全功能

    Ubuntu下安装命令root@master1:~#aptinstall-ybash-completion Readingpackagelists...Done Buildingdependencytree Readingstateinformation...Done bash-completionisalreadythenewestversion(1:2.10-1ubuntu1). 0upgraded,0newlyinstalled,0toremoveand29notupgraded.复制centos下安装命令[root@dss~]#yuminstallbash-completion-y Loadedplugins:fastestmirror,langpacks Loadingmirrorspeedsfromcachedhostfile *epel:mirrors.tuna.tsinghua.edu.cn Package1:bash-completion-2.1-8.el7.noarchalreadyinstalledandlatestversion Nothingtodo [roo

  • 九个问题从入门到熟悉HTTPS

    大家好,又见面了,我是全栈君。女朋友也是软件工程专业,因为快要毕业了,最近一边做毕设一边学习编程。前两天她问我HTTPS的问题,本来想直接扔一篇网上的教程给她。后来想了一下,那些文章大多直接介绍概念,对新手不太友好,于是我干脆亲自给她解释一下,顺便整理了一份问答录。Q1:什么是HTTPS?BS:HTTPS是安全的HTTPHTTP协议中的内容都是明文传输,HTTPS的目的是将这些内容加密,确保信息传输安全。最后一个字母S指的是SSL/TLS协议,它位于HTTP协议与TCP/IP协议中间。Q2:你说的信息传输安全是什么意思BS:信息传输的安全有三个方面:客户端和服务器直接的通信只有自己能看懂,即使第三方拿到数据也看不懂这些信息的真实含义。第三方虽然看不懂数据,但可以XJB改,因此客户端和服务器必须有能力判断数据是否被修改过。客户端必须避免中间人攻击,即除了真正的服务器,任何第三方都无法冒充服务器。很遗憾的是,目前的HTTP协议还不满足上述三条要求中的任何一条。Q3:这么多要求,一个一个去满足是不是很累?BS:不累,第三个要求可以不用管是的,我没开玩笑,你可以暂时别管第三个要求,因为它实际上

  • stata 导出 相关系数表_STATA数据处理技巧与计量分析二|基本语句介绍

    大家好,又见面了,我是你们的朋友全栈君。上期小统和大家一起了解了STATA数据处理技巧与计量分析的背景介绍,这期小统和大家一起学习一下基本语句介绍。Stata操作界面核心功能(dofile)Stata中的命令集合文件,在编程语言中成为脚本(scripts),是指为达到某一分析目的进行的数据读取、数据处理、分析等的命令集合。Stata的基础语法基本语法结构:funNamevariable/(varlist)if/in,by()otheroptionsgeneratenewVar=var1/var2summarizevar1var2newVarifgroup==1regressindepVardepVar1depVar2depVar3,robust•任何的实证分析,收集到的数据形形色色,格式不一。•因此,很多时候,数据清洗或者初步的数据处理成为了最重要的环节。。。数据导入与保存:helpinsheet//可以导入csv或者txt数据文件(常用)helpimportexcel//导入excel文件(常用)helpimportsasxport//导入sas文件(少用)helpuse//导入dt

  • MySQL 案例:analyze,慢查询,与查询无响应

    问题描述有时候,遇到同样的SQL语句在正式环境的主库和只读实例的执行时间相距甚远时,第一时间就会想到是不是采样信息不一致,导致执行计划不准,从一个高效的查询变成了慢查询。找到问题所在之后,自然是analyze一下,重新采集信息就好,这个时候,却发现analyze表上的所有select突然卡住了,不返回任何结果。解决方案如果这种现象已经发生了,可以尝试kill掉“最早的”那些慢查询。即如果tb1上有慢查询,且进行了analyze后遇到了问题,找一下tb1上在analyze之前已经开始执行,但是没结束的慢查询,然后全部kill掉。问题还原先来构造一下场景:CREATETABLE`stu`( `id`int(11)NOTNULL, `name`varchar(16)DEFAULTNULL, `age`int(11)DEFAULTNULL, PRIMARYKEY(`id`), KEY`idx_name`(`name`), KEY`idx_age`(`age`), KEY`idx_n_a`(`name`,`age`) )ENGINE=InnoDBDEFAULTCHARSET=utf8mb4 I

  • 除了ZYNQ还有哪些内嵌ARM硬核的FPGA?

    软核和硬核内嵌处理器硬核的FPGA,即SoCFPGA,是在芯片设计之初,就在内部的硬件电路上添加了硬核处理器,是纯硬件实现的,不会消耗FPGA的逻辑资源,硬核处理器和FPGA逻辑在一定程度上是相互独立的,简单的说,就是SoCFPGA就是把一块ARM处理器和一块FPGA芯片封装成了一个芯片。更多介绍可以查看:FPGA硬核和软核处理器的区别1.Xilinx的ZYNQ-7000系列Xilinx发明的FPGA颠覆了半导体世界,创立了Fabless(无晶圆厂)的半导体模式。Zynq®-7000系列集成了ARMCortex-A9处理器,同时具有ARM软件的可编程性和FPGA的硬件可编程性,不仅可实现重要分析与硬件加速,同时还在单个器件上高度集成CPU、DSP、ASSP以及混合信号功能。ZYNQ芯片内部框图zynq内部框图准确的说,ZYNQ并不能说是一个嵌入式ARM硬核的FPGA,官方对其称呼是可扩展处理平台。Zynq-7000可扩展处理平台是采用赛灵思新一代FPGA(Artix-7与Kintex-7FPGA)所采用的同一28nm可编程技术的最新产品系列。可编程逻辑可由用户配置,并通过“互连”模块连

  • Linux命令jobs小记

    命令使用过程中,输出中总是会带两个符号:+和-,如:复制[1]7893Runninggpass& [2]7904Runninggnome-calculator& [3]-7955Runninggeditfetch-stock-prices.py& [4]+7958Stoppedpingcyberciti.biz复制它们的含义如下: %Number:Usethejobnumbersuchas%1or%2. %String:Usethestringwhosenamebegins withsuspendedcommandsuchas%commandNameHereor %ping. %+OR%%:Referstothecurrentjob. %-:Referstothepreviousjob. 具体可参见:https://www.geeksforgeeks.org/process-control-commands-unixlinux/复制

  • 三十六亿的《哪吒》历时五年,如何用AI解决动画创作难题?

    作者|神经小姐姐来源|HyperAI超神经(ID:HyperAI) 【导读】《哪吒之魔童降世》自7月26日上映以来,好评如潮,票房一路高歌猛进,目前已突破36亿。这款火爆的动画背后,是主创团队历时5年的细致打磨。而这漫长的制作过程中,人工智能技术在其中助推多个环节的进展,让《哪吒》更早地呈现在我们眼前。 哪吒又双叒叕破纪录了! 电影《哪吒之魔童降世》自7月26日上映以来,一直在刷新动画电影的票房纪录。截止目前,19天里全网票房突破36亿,观影人数超过1亿!成为了首部观影人数破亿的动画电影。 哪吒之前,国内的动画电影票房最高记录是15亿 在票房疯长的背后,它在豆瓣的评分也维持在8.6分,不少人开始感慨:中国动画的里程碑来了。 这样一部改编自神话故事的电影,凭什么像国漫界的一匹黑马,收获如此高的票房呢? 我哪吒是靠颜值收获的这么一大波粉丝吗 除了颠覆的人物设置,全新的故事设定,为观众带来惊喜之外,精致的视觉效果,更是《哪吒》如此炸裂的关键。这些酷炫的视觉效果,让一个又丧又皮的「魔化」哪吒,成了这个夏天最「靓」的仔。 险些让哪吒难产的动画制作 观众被这个最「靓」的仔深深吸引之时,不会想到,他

  • 正交分析法设计理论及实践

    一、理念介绍在黑盒用例设计方法中有一个大家耳熟能详的正交分析法,却鲜有人知“Pairwise”设计理念。设想一种常见的场景,工期很紧的项目,原定的测试时间被“无理”地压缩之后,如何能用极少的时间去保证更高的质量呢?举个例子,如果让你测试一下word字体效果,你会整理出多少个用例呢?答案很简单是2的七次方=128个用例,但当工期特别紧的时候(128个用例执行不完)你又会从中选取哪些用例来执行呢?“Pairwise”(官网:http://www.pairwise.org/)是行之有效的一个思路或者是强有力的理论基础。它是L.L.Thurstone(29May1887–30September1955)在1927年首先提出来的。他是美国的一位心理统计学家。Pairwise也正是基于数学统计和对传统的正交分析法进行优化后得到的产物。Pairwise基于如下2个假设:(1)每一个维度都是正交的,即每一个维度互相都没有交集。(2)根据数学统计分析,73%的缺陷(单因子是35%,双因子是38%)是由单因子或2个因子相互作用产生的。19%的缺陷是由3个因子相互作用产生的。因此,pairwise基于覆盖所

  • 剖析NVIDIA Volta架构之指令篇

    写在最前由于实验结果不太好,现在已经开始往最底层的sass修改上努力了,鉴于nvidia官方出于大概是商业目的,关于sass的内容少之又少,因此只能零星地从各种paper或者之类的东西里寻找。前两天发现了一个文档,是关于Volta架构的,里面讲了一些关于sass的内容,大致和maxas的介绍差不多但是更好懂,特此翻译了相关部分,也就是第二章的内容。ps:点此下载原文正文开始Volta使用的指令编码方式与Pascal和Maxwell架构不同。与以前架构最为不同的地方就是,Volta使用128位来编码每个指令和指令对应的控制信息。以前的架构都是使用64位编码每个指令,然后再分出额外的64位来表示控制信息,而一条控制信息可能是和多条指令相关联的。下面是个相关的例子:以上代码是使用nvdisasm反汇编出来的,其分成两个64位用于方便显示,第一行只是编码后的指令信息,第二行包含指令信息和控制信息。据我们从彻底的汇编指令中得到的知识,这128位是按照如下规则划分的:至少有91位用于指令编码至少23位用于控制信息据我们实验来看,剩下的14位没用控制信息Kepler架构将控制信息引入了编译器对于指令

  • 【入手篇】我是不是买到一块假的Jetson TX2开发板?

    NVIDIA高性能嵌入式开发套件JetsonTX2以其在终端上部署人工智能计算能力,同时提供了JetPackSDK全套软件的支持,成为众多开发者趋之如骛的心头好。但是当您兴致勃勃地购买到心仪已久的JetsonTX2后,很有可能会遇到这几个问题,甚至怀疑自己是不是买到一块假的JetsonTX2开发板: 是不是少根电源线?对,当你打开包装盒,然后兴致勃勃地想连上显示器,接上电源,准备开机的时候,你会发现怎么哪里不对?少了根电源线!电源线!电源线!是的,NVIDIA正规出厂包装里确实没有附带这根电源线,所以麻烦您提前准备好! 为啥我的风扇不转?当您准备好电源线,接上电,准备迎接历史性的一刻,然后又发现——为啥我的风扇不转呢?用过第一代产品JetsonTK1用户都知道,TK1开发板接上电,风扇立刻就会华丽地转起来,似乎是向世人展示这个板子与生俱来的活力,然而在JetsonTX1和TX2上,风扇却纹丝不动.... 其实是正常的,当开发板的计算压力还没那么大的时候,风扇是不会轻易转的....所以大胆使用,这并不表示板子是有问题的。 为啥我黑屏?部分用户不会直接使用HDMI显示器接开发板,常见是

  • 傅盛:猎豹已过最难时期 AI人才培养的核心应在本地

    “最困难的时候已经过去了。”在经历了股票低迷、股票被坐空等事件后,在第四届世界互联网大会上,傅盛在接受网易科技等媒体采访时表示,猎豹已经回到正轨,无论是在对AI产品的布局、海外的游戏广告,或是近期的合作交易,猎豹都有了清晰的定位和布局。当今,很多企业提出“allinAI”战略,傅盛认为,猎豹的优势在于产品,要用产品的优势去弥补技术的不足。因此,对于猎豹和傅盛来说,现在唯一的压力就是把产品做出来。“AI最后要落地到产品本身”。傅盛强调,要用产品的思路去思考技术怎么落地,而不是研发一个放之四海而皆准的技术。“一、AI人才培养的核心应在本地?近些年来,人工智能在中国逐渐的普及与发展,各大公司都想在AI这一新兴领域的先机,于是AI人才备受热捧,但与之相对应的是现状是,AI人才的稀缺。于是,是从海外挖人还是自己去培养人是现阶段众多布局AI公司所要考虑的。“在海外挖人,坦率来讲不是太成功。”傅盛表示,中国公司去美国湾区挖人难度很大,猎豹在湾区搞的研发,当时最大的问题是是时差。“你睡他不睡,他睡你没睡,你别看这一点点东西,非常麻烦的,都不说视频会议了,而且飞过去差不多10来个小时。”这也导致人才流动

  • 前端学习笔记———浏览器篇

    谷歌webkit国内常用谷歌qq浏览器gecko火狐prestoOpentridentIE控制台结构Elememts:查看结构样式,可以在线修改调试Console:查看输出结果和报错信息,是js调试利器Sources:查看项目源码,目录结构。Network:查看当前网站所有资源的请求信息(包括和服务器的HTTP报文信息)、加载时间等(项目优化)Application:查看当前网络数据存储和资源文件(盗图偷数据~~)JS做客户端语言(node.js)按照相关的JS语发,去操作页面元素,有时还有操作浏览器里面的一些功能ECMAScript3/5/6…:JS的语法规范(变量、数据类型、操作语句等)DOM(documentobjectmodel:文档对象模型,提供一些JS的属性和方法,用来操作DOM元素BOM(browserobjectmodel):浏览器对象模型,提供一些JS属性和方法,用来操作浏览器的(比如浏览器的类型,浏览器窗口大小)JS中的变量(variable)变量:可变的量,用来存相应的值,可以改变这个值//ES3 vara=3; a=13; console.log(a);//13

  • Apache ShenYu 集成 RocketMQ 实时采集海量日志的实践

    本文作者:胡泰室,快手Java开发工程师。 ​ 认识ApacheShenYu(神禹) 网关最重要的是流量治理,而流量治理与大禹治水有很多相似的地方,因此,网关的流量治理项目被命名为神禹。 ShenYu是一个高性能、多协议、易扩展、响应式的API网关,主要特性包括丰富的协议、插件化、流量治理和高性能。 ShenYu支持HTTP、SpringCloud、gRPC、Dubbo、Sofa、Tars、Motan等协议。为了保证可扩展性,ShenYu采用了插件化的设计,支持热插拔,内置丰富的插件。插件化设计最大的好处为可扩展性强,ShenYu大量的流量治理功能都各自对应了不同的插件。ShenYu支持鉴权、限流、熔断、安全、负载均衡、灰度、动态上游、可观测性等丰富而灵活的流量管理。由于网关对性能要求特别高,ShenYu采用了响应式全链路异步,支持集群部署、蓝绿发布等。 客户端发起请求经过网关,再由网关将请求转换到服务提供者,并将服务提供者的响应发送给客户端。 从发起请求的角度来看架构,它支持多语言,不限操作平台。HTTP请求首先经过一层代理层,代理层可以是Nginx、ShenYuNginx、Sh

  • 使用Elastic APM监控你的.NET Core应用

    作者:Jax 前言 在应用实际的运维过程中,我们需要更多的日志和监控来让我们对自己的应用程序的运行状况有一个全方位的了解。然而对于大部分开发者而言,平时大家所关注的更多的是如何更优雅的实现业务,或者是如何让应用的响应速度更快等等与编码相关的技术,对于应用程序的监控,可能还停留在日志文件的层面,而且大多数是出了事故被人为发现后,才通过日志尝试去定位问题。 本文所准备介绍的ElasticAPM是一套用于监控应用各项指标,比如系统响应时间、异常、EF执行的SQL记录等等,并且可以将这些记录组织成一个可追溯的链路,方便查询问题。此外,ElasticAPM还可以通过Kibana来做非常漂亮的可视化展示,方便我们定位和发现问题。 废话不再多说,我们开始实战~ ElasticAPM介绍 ElasticAPM的由下面四个组件所组成,如下图: APMAgent APMAgent是安装到你的.NETCore程序中的一个Nuget包,他用于性能、错误等各类数据的收集,并将收集到的数据缓存起来分批发送到APMServer。当然,除了.NETCore使用的Nuget包,他还可以支持很多其他的语言,比如Java

  • 【原】无脑操作:Webstorm集成Git/Github

    Webstorm作为前端开发的主流工具,对Git及Github可以非常简便的集成。 1、开发环境:(如何安装就不说了) ①Webstorm2018 ②gitversion2.20.1 ③Github注册用户 --------------------------------------------------------------------------------------------------------------- 2、Webstorm的工具设置: ①菜单项File下的Settings,搜索git,设置PathtoGitexecutable:为git的安装路径    ② 菜单项File下的Settings,搜索github,点击右侧+添加github的账号和密码,点击LogIn登录    --------------------------------------------------------------------------------------------------------------- 3、Gith

  • 3. SpringMVC入门

    Spring与Web环境集成 1.1ApplicationContext应用上下文获取方式 应用上下文对象是通过newClasspathXmlApplicationContext(spring配置文件)方式获取的,但是每次从容器中获得Bean时都要编写newClasspathXmlApplicationContext(spring配置文件),这样的弊端是配置文件加载多次,应用上下文对象创建多次。 在Web项目中,可以使用ServletContextListener监听Web应用的启动,我们可以在Web应用启动时,就加载Spring的配置文件,创建应用上下文对象ApplicationContext,在将其存储到最大的域servletContext域中,这样就可以在任意位置从域中获得应用上下文ApplicationContext对象了。 1.2Spring提供获取应用上下文的工具 上面的分析不用手动实现,Spring提供了一个监听器ContextLoaderListener就是对上述功能的封装,该监听器内部加载Spring配置文件,创建应用上下文对象,并存储到ServletContext域

  • 期末成绩计算方法

    综合作业验收时间: 12月15日(周日)的课程作业验收,定在教室F121,时间是14:00开始 综合作业分数30分   期末成绩构成:9次作业+4次课堂作业+GoldNum锦标赛成绩 9次作业:8次10分的,最后1次综合的30分 4次课堂作业:每次5分 GoldNum锦标赛:5分 9次作业中一直未交的扣掉本次作业满分 上述成绩加起来后得到每位同学的原始得分[S1...Sn] [S1...Sn]映射到期末成绩[65...100] 映射方法通过映射到90分数以上的人数来决定   附加作业每次5分,最高可附加10分,不影响其它同学成绩,做的同学单独在自己的期末成绩(映射前)上加  附加题可选题目: 1、用 windbg 以及其它工具如何debug  程序,  以及如何下载 windowsSDK(这个工具包包括了 windbg 以及其它工具) http://msdn.microsoft.com/en-US/windows/desktop/bg162891 

  • PXE自动安装Linux系统

    什么是PXE PXE,全名Pre-bootExecutionEnvironment,预启动执行环境; 通过网络接口启动计算机,不依赖本地存储设备(如硬盘)或本地已安装的操作系统; 由Intel和Systemsoft公司于1999年9月20日公布的技术; Client/Server的工作模式; PXE客户端会调用网际协议(IP)、用户数据报协议(UDP)、动态主机设定协议(DHCP)、小型文件传输协议(TFTP)等网络协议; PXE客户端(client)这个术语是指机器在PXE启动过程中的角色。一个PXE客户端可以是一台服务器、笔记本电脑或者其他装有PXE启动代码的机器(我们电脑的网卡)。 原理 (1)客户端PXE网卡启动 (2)从DHCP服务器获得IP (3)从TFTP服务器上下载pxelinux.0、default (4)根据配置文件default指定的vmlinuz、initrd.img启动系统内核,并下载指定的ks.cfg文件 (5)跟据ks.cfg去(HTTP/FTP/NFS)服务器下载RPM包并安装系统 (6)完成安装 步骤 1、安装vsftpd服务 #yuminstal

  • Python作图笔记

    感谢莫烦大神,附带他的个人网站链接:https://morvanzhou.github.io/ 再带上官方的文档,多看文档啊!不然参数忘了就没地方查了:https://matplotlib.org/api/pyplot_summary.html 以下是关于作图部分的相关笔记: 一、matplotlib相关简介 相关介绍和安装,直接装anaconda,全部解决,这里直接跳过。   二、基本使用 tips:如果再plt中直接设置xlim,xticks等,变到ax中需要改成set_xlim,set_xticks    

  • 2.3 练习题

    1''' 2 3针对列表 4 5names=['金角大王','黑姑娘','rain','eva','狗蛋','银角大王','eva','鸡头'] 6 7进入以下操作 8 9通过names.index()的方法返回第2个eva的索引值 10 11把以上的列表通过切片的形式实现反转 12 13打印列表中所有下标为奇数的值 14 15通过names.index()方法找到第2个eva值,并将其改成EVA 16''' 17names=['金角大王','黑姑娘','rain','eva','狗蛋','银角大王','eva','鸡头'] 18#方法1 19fori,kinenumerate(names): 20#print(i,k) 21ifk=='eva': 22print(i,k) 23#方法2 24count=0 25foriinnames: 26#print(count,i) 27ifi=='eva': 28print(count,i) 29count+=1 30 31 32#方法3 33names=['金角大王','黑姑娘','rain','eva','狗蛋','银角大王','eva',

相关推荐

推荐阅读