Ⅰ 进入互联网行业一定要学那些编程啊,C语言啊,设计吗
1、第一法则:站在巨人肩膀上 && 不要重复造轮子。
对于这种复杂的过程,第一选择是使用现成的,节约时间,提升效率。
Wireshark(前称Ethereal)是一个网络封包分析软件。网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料。Wireshark使用WinPCAP作为接口,直接与网卡进行数据报文交换。
网络封包分析软件的功能可想象成 "电工技师使用电表来量测电流、电压、电阻" 的工作 - 只是将场景移植到网络上,并将电线替换成网络线。在过去,网络封包分析软件是非常昂贵,或是专门属于营利用的软件。Ethereal的出现改变了这一切。在GNUGPL通用许可证的保障范围底下,使用者可以以免费的代价取得软件与其源代码,并拥有针对其源代码修改及客制化的权利。Ethereal是目前全世界最广泛的网络封包分析软件之一。
2、第二法则:学习 && 提升。
如果是单纯的学习知识,可以直接尝试写一些具有部分功能的程序,过程会有点艰难,但非常有意义。学习网络编程,需要了解 开放系统互连参考模型的的七层每一层的意义以及现实当中实现的四层的网络协议。然后就可以知道抓包的包位于模型当中的传输层协议,包括UDP和TCP的协议。进一步要学习每种协议的格式,表头,数据包等等。一句话,冰冻三尺非一日之寒。
3、Windows下的抓包及简单的编程。
Windows2000在TCP/IP协议组件上做了很多改进,功能也有增强。比如在协议栈上的调整,增大了默认窗口大小,以及高延迟链接新算法。同时在安全性上,可应用IPSec加强安全性,比NT下有不少的改进。
Microsoft TCP/IP 组件包含“核心协议”、“服务”及两者之间的“接口”。传输驱动程序接口 (TDI) 与网络设备接口规范 (NDIS) 是公用的。 此外,还有许多用户模型应用程序的更高级接口。最常用的接口是 Windows Sockets、远程过程调用 (RPC) 和 NetBIOS。
Windows Sockets 是一个编程接口,它是在加州大学伯克利分校开发的套接字接口的基础上定义的。它包括了一组扩展件,以充分利用 Microsoft Windows 消息驱动的特点。规范的 1.1 版是在 1993 年 1 月发行的,2.2.0 版在 1996 年 5 月发行。Windows 2000 支持 Winsock 2.2 版。在Winsock2中,支持多个传输协议的原始套接字,重叠I/O模型、服务质量控制等。
这里介绍Windows Sockets的一些关于原始套接字(Raw Socket)的编程。同Winsock1相比,最明显的就是支持了Raw Socket套接字类型,通过原始套接字,我们可以更加自如地控制Windows下的多种协议,而且能够对网络底层的传输机制进行控制。
Ⅱ 什么叫编程规范
只要是一个有用的软件就需要大量的工作,首先要进行软件需求分析,然后要设计出软件的框架,而实现软件的代码仅占很少一部分(约20%)。而你不要小看这代码的实现,也是要很多人的参与的,一般软件代码就有上千行,更别说操作系统了,据说Linux就有千万行的代码。这就需要把一个软件分成很多小的模块,分工完成。这就是软件编程规范的背景。
软件编程规范概要:
(1)程序结构清晰,简单易懂,单个函数的程序行数不得超过100行。
(2)打算干什么,要简单,直截了当,代码精简,避免垃圾程序。
(3)尽量使用标准库函数和公共函数。
(4)不要随意定义全局变量,尽量使用局部变量。
(5)使用括号以避免二义性。
Ⅲ 学习编程语言最好的方法是什么
开发技巧和方法
1)筷子法则,不要试图一下子把某个知识理解的很清楚,就像一个老外来中国,第一次见到筷子,他的第一反应是这是啥东西,有人告诉他这是中国人吃饭的工具,第二次,他可以笨笨的使用筷子,第三次,有人问他什么是筷子他就成了行家,他说筷子就是吃饭的两根木棍。所以,知识的掌握是重复、重复、再重复。
2)新手必须有从读代码、写代码,到写程序的过程,急于就成,反而不成。
3)多动手、多实践、举一反三。
4)基础到什么时候都很重要,C语言、数据结构、算法、数据库、网络编程、内存 这些不管你是新手还是老手都要熟练掌握,否者写不出好的软件。
5)多参考别人设计的程序,想想他们是如何实现的会给你带来灵感。
6)要有坚持到底的信念,永不放弃的精神,憧憬一下未来,保时捷就在那里等着你,你就有干劲了
Ⅳ 编程是什么
编程是编定程序的中文简称,就是让计算机代码解决某个问题,对某个计算体系规定一定的运算方式,使计算体系按照该计算方式运行,并最终得到相应结果的过程。
为了使计算机能够理解人的意图,人类就必须将需解决的问题的思路、方法和手段通过计算机能够理解的形式告诉计算机,使得计算机能够根据人的指令一步一步去工作,完成某种特定的任务。这种人和计算体系之间交流的过程就是编程。
编程:设计具备逻辑流动作用的一种“可控体系”【注:编程不一定是针对计算机程序而言的,针对具备逻辑计算力的体系,都可以算编程。】
一、编程语言
机器语言:是机器能直接识别的程序语言或指令代码。计算机是基于二进制的0和1来处理运算,这种0和1的组合指令又叫做机器语言。
编译器:就像中国人和外国人说话要把中文翻译成英文一样。代码要运行,就要把代码翻译成机器语言,这个过程叫做编译,用来处理代码编译的软件叫做编译器。
编程语言:用来定义计算机程序的形式语言,用来向计算机发出指令。简单来说,就是人类和计算机进行交流的语言。
二、计算机如何处理程序?
按照冯·诺依曼存储程序的原理,计算机的工作流程大致如下:
用户打开程序,程序开始执行;
操作系统将程序内容和相关数据送入计算机的内存;
CPU根据程序内容从内存中读取指令;
CPU分析、处理指令,并为取下一条指令做准备;
取下一条指令并分析、处理,如此重复操作,直至执行完程序中的全部指令;
最后,将计算的结果放入指令指定的存储器地址。
Ⅳ 中国人学的编程,一直是在别人发明的工具上使用编程,有谁知道最原始的编译法则是什么样的
如果你学过数字电路你会知道计算机的本质是由0和1组成的。
最早的“编程”就是通过开关电线来控制计算机的行为。
后来有了汇编,用特定的字符串替代由0和1组成的编码。
再后来有了更高级的C语言,编译的原理是将其转换成汇编。再后来又有了C/C++,Java等面向对象的语言,这些解放了程序员,让他们将更多的精力放到程序本身的业务上去,而不是关注计算机的细节。
编译原理本身就像发明轮子一样,别人已经发明了,你还要跟个SB一样去再发明一个?
Ⅵ 怎么编程
如何学好VB
序:不要老是想着谁“最有钱途”,这些都不是我们应当考虑的,我们要考虑的是怎样才能真正的精通VB。如果成为了VB的专家,应当很容易赚到钱的。VB程序员为什么工资低,不是VB不行,是因为大部份VB程序员不行,他们只懂得用控件,而没有什么编程的思想。而VB的初学都只会用控件和简单的API就说精通VB了,显然影响的整个VB在程序界的地位,这些人显然不能称为程序员的,只能相当于会使用VB了,就像会Word一样。如果VB程序员都懂的数据结构,UML等,就完全是另外一回事了。有认为VB功能弱,请注意:仙剑95版就是用VB4做的,还有DirectX SDK7中有个一很好玩的3D游戏,声音和动画都非常好,也是用VB写的。所以VB能做很多东西,只要你想去做。
(1)VB不只是数据库和报表。不要以为VB就是数据库和报表,这只是VB强大功能的一小部份。如果这此都搞不清,还是好好的看一下相关的书籍,比在这里问问题有用多了。我以前没有学过数据库,只是有些编程的思路,后来学数据库就非常容易了。我做报表一般用RichTextBox或是From来做,一般都能做的很好,也不用去考虑什么水晶报表了。
(2)不要迷信于API。API能做很多东西,但有些东西在VB里面的函数中就有,API只是VB对WindowsSDK的封装而已。如果想学好API,建议学习SDK。如果VB本身就能很好的支持这个功能,何必还要用API呢。
(3)不要什么都想着控件。如果做程序都想着第三方控件的话,代价是很高的,不仅程序大,安全性也低了很多。其实VB本身带的控件已经完全够用了。
(4)认认真真的把MSDN中关于VB的内容好好看一看,特别是函数和语句,很有用的。
(5)遇到问题不要直接来这里问,自己好好想一想,试着解决这个问题,这虽然在时间上慢了,可是在自身的提高上却有很大的帮助。
(6)没事的时候,多研究些语言上的东西,如数据结构和算法,不要老是想着什么花哨的东西。这对以后的提高非常有帮助。
如何学好VB程序设计
1,学习程序设计的基本要求
2,Vb的功能及特点
3,学习VB程序设计的方法
对学习者知识的要求:
首先,学习程序设计要具备一定的数学基础.计算机与数学有很大的联系,综观计算机历史,计算机的数学模型(图灵机,由Alan Turing提出)和体系结构(由John Von Neuman提出)等都是由数学家提出的,最早的计算机也是为数值计算而设计的.因此,要学习好计算机就要有一定的数学基础.不过对于初学者来说,在数学基础方面的要求并不是很高,从我个人的角度来看,有高中数学水平就差不多了.
如何学好VB程序设计
学习程序设计基本要求
对学习者知识的要求:
其次,学习程序设计要有一定的逻辑思维能力.逻辑思维需要长时间的锻炼,如果你觉得自己在逻辑思维能力上有不足,也没有关系,因为编写程序本身也是对逻辑思维的锻炼.初学程序设计应具备的逻辑基础可以从高中数学中学到.
如何学好VB程序设计
学习程序设计基本要求
熟悉Visual Basic操作环境与设计工具,能设计应用程序界面.
掌握,理解面向对象程序设计基本概念
掌握VB语言的基础知识,程序设计的方法,
能阅读一般难的程序;
能应用编写一些简单程序;
具有用Visual Basic开发Windows环境下应用程序的能力和阅读分析一般难度的VB程序的能力.
如何学好VB程序设计
VB程序设计的基本要求
Visual Basic 简介
Visual Basic 是Microsoft 公司开发的Windows 应用程序开发工具,Visual ——"可视化的",是一种开发图形户界面(GUI)的方法.使得非计算机专业的人也可以开发出专业的Windows软件.
Visual Basic继承了BASIC语言简单易学的优点,又增加了许多新的功能,它采用面向对象与事件驱动的程序设计思想,使编程变得更加方便,快捷.使用Visual Basic既可以开发个人或小组使用的小型工具,又可以开发多媒体软件,数据库应用程序,网络应用程序等大型软件.是国内外最流行的程序设计语言之一.
2,VB的功能及特点
英文Visual的意思是"视觉的","可视的Baisc"这个名字可能抽象了点,但实际上它却是最直观的编程方法,之所以叫做"可视",你只要看到VB的界面就会明白,实际上你无需编程,就可以完成许多步骤.
在VB中引入了控件的概念,在Windows中控件的身影无处不在,如按钮,文本框等,VB把这些控件模式化,并且每个控件都有若干属性用来控制控件的外观,工作方法,能够响应用户操作(事件).
这样你就可以象在画板上一样,随意点几下鼠标,一个按钮就完成了,这些在以前的编程语言下是要经过相当复杂的工作的.
何为可视
Visual Basic的特点
1. 具有面向对象的可视化设计工具
2. 事件驱动的编程机制
3. 结构化的程序设计语言
4. 提供了易学易用的应用程序集成开发环境
5.支持多种数据库系统的访问
6.高度可移植化的代码
7.VB6.0在开发环境上,网络功能等的大大增强
Visual Basic的特点
可视化设计: Visual Basic为用户提供大量的界面元素(在Visual Basic中称为控件对象),例如 "窗体","菜单","命令按钮","工具按钮","检查框"等等,用户只需要利用鼠标,键盘把这些控件对象拖动到适当的位置,设置它们的大小,形状,属性等,就可以设计出所需的应用程序界面.
Visual Basic的特点
事件驱动编程:Windows操作系统出现以来,图形化的用户界面和多任务多进程的应用程序要求程序设计不能是单一性的,在使用Visual Basic设计应用程序时,必须首先确定应用程序如何同用户进行交互.(例如发生鼠标单击,键盘输入等事件时,用户必须编写代码控制这些事件的响应方法)这就是所谓的事件驱动编程.
程序设计方法概述
1.初期的程序设计
高运行效率,少占用内存为目标
2.结构化程序设计
程序的可读性,可维护性为目标
程序=算法+数据结构+计算机语言+面向过程的程序设计方法
3.面向对象的程序设计(OOP)
降低程序的复杂性,提高软件的开法效率和改善工作界面为目标
程序=对象+消息+面向对象的程序设计
面向对象的程序设计具有如下的优点:
1.符合人们习惯的思维方法,便于分解大型的复杂多变的问题.由于对象对应于现实世界中的实体,因而可以很自然地按照现实世界中处理实体的方法来处理对象,软件开发者可以很方便地与问题提出者进行沟通和交流.
2.易于软件的维护和功能的增减.对象的封装性及对象之间的松散组合,都给软件的修改和维护带来了方便.
3.可重用性好.重复使用一个类(类是对象的定义,对象是类的实例化),可以比较方便地构造出软件系统,加上继承的方式,极大地提高了软件开发的效率.
4.与可视化技术相结合,改善了工作界面.随着基于图形界面操作系统的流行,面向对象的程序设计方法也将深入人心.它与可视化技术相结合,使人机界面进入GUI时代.
(1)养成良好的学习习惯
VB程序设计的入门学习并不难,但却是一个十分重要的过程,因为程序设计思想就在这时形成的,良好的程序设计习惯也在这个阶段养成.
(2)学习程序设计要注重理解一些重要的概念.
VB程序设计本身并不复杂,翻开一本程序设计学习的书籍,看到的无非就是变量,函数,条件语句,循环语句等概念.但要真正能进行程序设计,需要深入理解这些概念.因此,在程序入门阶段还是应该重视概念的学习.
3,学习VB程序设计的方法
(3)自己动手编写程序
程序设计入门阶段要经常自己动手编写程序,亲自动手进行程序设计是创造性思维应用的体现,是培养逻辑思维的好方法.因此一定要多动手编写程序,而且要从小程序开发开始,逐渐提高开发程序的规模.
(4)阅读,借签别人设计的好程序
多看别人设计好的程序代码,包括教材上的例题程序.在读懂别人程序后,要想他为什么这么设计 能不能将程序修改完成更多的功能 则可以学到别人优秀的东西,帮助自己提高自身水平.
3,学习VB程序设计的方法
(5) VB程序设计学习的重点
重点放在思路,算法,编程构思和程序实现上.
语句只是表达工具,要求堂上积极思考,尽量当堂学懂,并做到灵活应用.
学会利用计算机编程手段分析问题和解决问题.
(6)养成良好的编程习惯
强调可读性;变量要加注释;
程序构思要有说明;
学会如何调试程序;
对运行结果要做正确与否的分析.
3,学习VB程序设计的方法
学好VB程序设计的具体要求:
(1)课前预习,认真听课并作适当做笔记,课后要认真复习消化所学内容,完成作业.
(2)多写程序,注重实践
程序设计课是高强度的脑力劳动,不是听会的,也不是看会的,而是练会的.
只有自己动手,编写一些程序,才会有成就感,进而对课程产生兴趣,学起来才比较从容.只有当你在编写大量程序之后,才能获得真知灼见,感到运用自如.
动手能力的培养是这门课和以往课程最大的不同之处.
3,学习VB程序设计的方法
(3)上机调试程序应注意的几点:
上机前应认真把实验题在用纸上做一做(包括窗体界面设计,事件代码的编写等)
每次上机后应总结,把没有搞清楚的问题记录下来,请教老师或同学.
平时应多抽课余时间多上机调试程序.注意系统的提示信息,遇到问题多问几开为什么.
3,学习VB程序设计的方法
(4)保持良好的学习心态
要有自信,自强,积极主动学习.
克服畏难情绪,树立学好程序设计的信心.
VB重点和难点(文档下载):
Ⅶ C语言编写程序四则运算法则
1234567891011121314151617# include <stdio.h>int main(void){ int a,b,s; char c; scanf("%d%c%d",&a,&c,&b); switch(c) { case '+':s=a+b;break; case '-':s=a-b;break; case '*':s=a*b;break; case '/':s=a/b;break; default:return -1; } printf("%d",s); return 0;}
如果还要判断除数为0的情况 再添个if即可
Ⅷ 怎么学习计算机编程
普通人如何学习编程
Acherie
现在,计算机已经融入到了我们生活的方方面面,手机、电脑、智能家居等。在计算机变得如此普遍的今天,是不是每个人都应该学习一点编程呢?
2013年,非营利性组织Code.org发起了“Hour of Code”的倡议,得到了很多着名人物和企业的支持(Is Computer Programming Hard to Learn ?),其中包括扎克伯格、比尔盖茨、苹果、谷歌,就连美国总统奥巴马都发布视频呼吁每个美国公民都学习编程。
李笑来老师建议必备的两个技能——英语和编程。“改变自己”的辉哥(张辉)也在文章中提到过自己利用 python 写了一个群发邮件的脚本。
所以,这么多名人,牛人都呼吁大家学习编程,那么普通人学习编程到底有什么用?
普通人学编程有什么用?
主要有如下理由:
教会我们思考
提高效率,使生活、工作变得简单
生活基本技能
编程教会如何思考
普通人如何学习编程
现在,如果你觉得有必要学习一下编程,那么,我们就来讨论下——普通人如何学习编程?
为了解决具体问题而编程
最重要的一点:为了解决具体问题而编程。很多人会在学了几个月编程后,感觉并没有学到什么,这就是因为你并没有从中找到成就感。当你通过学习编程解决了自己具体的问题后就会感到巨大的成就感,比如我为了解决每天部署繁琐的过程,学习了 shell 脚本,只需要一个脚本就能部署了,这就给了我很大的正向反馈。而且当你为了某个具体问题而学习编程的时候,你就会知道,那些知识对我解决问题有用,那些可以暂时不学。编程需要学习的东西很多,所以必须做出取舍。
当并无具体的需求时,如果有兴趣,那也行。如果没有兴趣,只是觉得应该学习编程而编程的话。我建议你在学习了基本的知识以后(比如了解了这门语言能实现什么功能),给自己找一个目标(比如搭建一个个人网站,抓取某个页面的图片),然后实现它。有了目标再学习,效果会好很多。
使用Google和英文
为什么这两个东西如此重要呢?
第一、技术很多都起源于美国和欧洲,所以几乎所有技术的官方网站都是英文的。而学技术要学会使用官方文档,当然也是英文的。当然你也可以看翻译过来的资料,但是毕竟是翻译过一次的,所以很依赖于译者翻译水平的高低,而且这是已经被人理解过的二手的资料了。
第二、学会使用 Google 为什么也成为了必要。在你学习,开发的过程中会遇到很多的问题,这个时候会经常用到搜索工具。在编程领域,英文资源比中文资源多了不是一星半点。比如 stackoverflow(一个编程的问答网站)几乎包括了你学习编程时会遇到的各种问题的答案,以为这些问题很早以前就有人遇到过了。所以,遇到编程问题时,记得使用英文在 Google 上搜索答案。
第三、学会如何提问,必看的文章是:《提问的智慧》。建议把这篇长文看完再提问。
找到合适的学习资源
编程可能是最适合自学的科目了,因为有大量的资源(书籍、视频、教程)可以选择。那么如何在海量的资源中选择适合自己的呢?
首先,我认为资源分为两类——书籍和视频。如果你喜欢看书,那就找一本好书,如果喜欢视频,那就找好视频。那么如何区分好书和好视频呢——提问,你可以使用搜索引擎,询问身边的朋友。而且,一定要找与自己当前阶段契合的书籍和视频教程,并不是所有的书籍都适合初学者,所以一定要注意选择。最后,一定要看该语言最权威的书籍,肯定不会让你失望。
再者,要学会看官方文档,学会查官方手册。教程和手册的区别在于:
教程:教你如何使用这门语言,可能很多东西不会提及
手册:提供完整、全面的有关这门语言的信息(很多时候就是 API 手册)
学习的时候我们看教程,但是有了一定基础只有,要学会看官方的手册。因为手册包含了这门技术的方方面面,有一个完整的知识体系。它包含对这门语言原理的介绍,官方推荐的用法,API文档等,所以一定要学会看官方文档。
多练习,多讨论
古典老师提到学习的721法则,我觉得就很适合编程的学习:
10%的时间自己学习
20%的时间与人沟通讨论
70%的时间去练习实践
编程是很需要练习的科目,看再多的书还不如在电脑上运行一次来的实在。学习编程要做到每天写代码,代码运行起来之后,可以极大的加深你对知识的理解。
还有就是要多讨论,多看别人的代码。讨论能够让人的思想碰撞,产生意想不到的火花。比如你思考一个问题的解决方案很久了,但是还是没有头绪,但是可能别人的一句话可能就会点醒你,这在编程上很常见。而且,通过看别人的代码我们可以学习更好的实现方法,更优的解决问题的逻辑,特别是牛人的代码。
编程语言的选择
虽然最终都是在计算机上运行的指令,但是还是有很多语言我们可以选择,不同的语言可以实现不同的功能,那么普通人如何选择语言呢?
选择什么语言还是需要看你具体的需求是什么。如果你平时使用 office 比较多,那么可以学习VBA。如果你需要自动化很多重复的工作,那么你可以学习Python。如果你想要建造自己的个人网站,那么你需要学习Javascript、Html和Css。如果你没有具体的需求,那么我建议你学习Python,因为它很容易让你感到提高了生产力。
Ⅸ 计算机编程里的进制该怎么表示,计算,转换啊
计算机中按照不同的分类可以分成十进制、八进制、十六进制和二进制。转换法则表示:1. 十 -----> 二 给你一个十进制,比如:6,如果将它转换成二进制数呢? 10进制数转换成二进制数,这是一个连续除2的过程: 把要转换的数,除以2,得到商和余数, 将商继续除以2,直到商为0。最后将所有余数倒序排列,得到数就是转换结果。 听起来有些糊涂?我们结合例子来说明。比如要转换6为二进制数。 “把要转换的数,除以2,得到商和余数”。 那么: 十转二示意图 要转换的数是6, 6 ÷ 2,得到商是3,余数是0。 “将商继续除以2,直到商为0……” 现在商是3,还不是0,所以继续除以2。 那就: 3 ÷ 2, 得到商是1,余数是1。 “将商继续除以2,直到商为0……” 现在商是1,还不是0,所以继续除以2。 那就: 1 ÷ 2, 得到商是0,余数是1 “将商继续除以2,直到商为0……最后将所有余数倒序排列” 好极!现在商已经是0。 我们三次计算依次得到余数分别是:0、1、1,将所有余数倒序排列,那就是:110了! 6转换成二进制,结果是110。 把上面的一段改成用表格来表示,则为: 被除数 计算过程 商 余数 6 6/2 3 0 3 3/2 1 1 1 1/2 0 1 (在计算机中,÷用 / 来表示) 2. 二 ----> 十 二进制数转换为十进制数 二进制数第0位的权值是2的0次方,第1位的权值是2的1次方…… 所以,设有一个二进制数:0110 0100,转换为10进制为: 下面是竖式: 0110 0100 换算成 十进制 " ^ " 为次方 第0位 0 * 2^0 = 0 第1位 0 * 2^1 = 0 第2位 1 * 2^2 = 4 第3位 0 * 2^3 = 0 第4位 0 * 2^4 = 0 第5位 1 * 2^5 = 32 第6位 1 * 2^6 = 64 第7位 0 * 2^7 = 0 + --------------------------- 100 用横式计算为: 0 * 2 ^ 0 + 0 * 2 ^ 1 + 1 * 2 ^ 2 + 1 * 2 ^ 3 + 0 * 2 ^ 4 + 1 * 2 ^ 5 + 1 * 2 ^ 6 + 0 * 2 ^ 7 = 100 0乘以多少都是0,所以我们也可以直接跳过值为0的位: 1 * 2 ^ 2 + 1 * 2 ^ 3 + 1 * 2 ^ 5 + 1 * 2 ^ 6 = 100 3. 十 ----> 八 10进制数转换成8进制的方法,和转换为2进制的方法类似,唯一变化:除数由2变成8。 来看一个例子,如何将十进制数120转换成八进制数。 用表格表示: 被除数 计算过程 商 余数 120 120/8 15 0 15 15/8 1 7 1 1/8 0 1 120转换为8进制,结果为:170。 4. 八 ----> 十 八进制就是逢8进1。 八进制数采用 0~7这八数来表达一个数。 八进制数第0位的权值为8的0次方,第1位权值为8的1次方,第2位权值为8的2次方…… 所以,设有一个八进制数:1507,转换为十进制为: 用竖式表示: 1507换算成十进制。 第0位 7 * 8^0 = 7 第1位 0 * 8^1 = 0 第2位 5 * 8^2 = 320 第3位 1 * 8^3 = 512 -------------------------- 839 同样,我们也可以用横式直接计算: 7 * 8^0 + 0 * 8^1 + 5 * 8^2 + 1 * 8^3 = 839 结果是,八进制数 1507 转换成十进制数为 839 5. 十 ----> 十六 10进制数转换成16进制的方法,和转换为2进制的方法类似,唯一变化:除数由2变成16。 同样是120,转换成16进制则为: 被除数 计算过程 商 余数 120 120/16 7 8 7 7/16 0 7 120转换为16进制,结果为:78。 6. 十六----> 十 16进制就是逢16进1,但我们只有0~9这十个数字,所以我们用A,B,C,D,E,F这五个字母来分别表示10,11,12,13,14,15。字母不区分大小写。 十六进制数的第0位的权值为16的0次方,第1位的权值为16的1次方,第2位的权值为16的2次方…… 所以,在第N(N从0开始)位上,如果是是数 X (X 大于等于0,并且X小于等于 15,即:F)表示的大小为 X * 16的N次方。 假设有一个十六进数 2AF5, 那么如何换算成10进制呢? 用竖式计算: 2AF5换算成10进制: 第0位: 5 * 16^0 = 5 第1位: F * 16^1 = 240 第2位: A * 16^2 = 2560 第3位: 2 * 16^3 = 8192 + ------------------------------------- 10997 直接计算就是: 5 * 16^0 + F * 16^1 + A * 16^2 + 2 * 16^3 = 10997 (别忘了,在上面的计算中,A表示10,而F表示15) 现在可以看出,所有进制换算成10进制,关键在于各自的权值不同。 假设有人问你,十进数 1234 为什么是 一千二百三十四?你尽可以给他这么一个算式: 1234 = 1 * 10^3 + 2 * 10^2 + 3 * 10^1 + 4 * 10^0 7. 二 ----> 八 (11001.101)(二) 整数部分: 从后往前每三位一组,缺位处用0填补,然后按十进制方法进行转化, 则有: 001=1 011=3 然后我们将结果按从下往上的顺序书写就是:31,那么这个31就是二进制11001的八进制形式 小数部分: 从前往后每三位一组,缺位处用0填补,然后按十进制方法进行转化, 则有: 101=5 然后我们将结果部分按从上往下的顺序书写就是:5,那么这个5就是二进制0.101的八进制形式 所以:(11001.101)(二)=(31.5)(八) 8. 八 ----> 二 (31.5)(八) 整数部分:从后往前每一位按十进制转化方式转化为三位二进制数,缺位处用0补充 则有: 1---->1---->001 3---->11 然后我们将结果按从下往上的顺序书写就是:11001,那么这个11001就是八进制31的二进制形式 说明,关于十进制的转化方式我这里就不再说了,上一篇文章我已经讲解了! 小数部分:从前往后每一位按十进制转化方式转化为三位二进制数,缺位处用0补充 则有: 5---->101 然后我们将结果按从下往上的顺序书写就是:101,那么这个101就是八进制5的二进制形式 所以:(31.5)(八)=(11001.101)(二) 9. 十六 ----> 二 ;二 ----> 十六 二进制和十六进制的互相转换比较重要。不过这二者的转换却不用计算,每个C,C++程序员都能做到看见二进制数,直接就能转换为十六进制数,反之亦然。 我们也一样,只要学完这一小节,就能做到。 首先我们来看一个二进制数:1111,它是多少呢? 你可能还要这样计算:1 * 2^0 + 1 * 2^1 + 1 * 2^2 + 1 * 2^3 = 1 * 1 + 1 * 2 + 1 * 4 + 1 * 8 = 15。 然而,由于1111才4位,所以我们必须直接记住它每一位的权值,并且是从高位往低位记,:8、4、2、1。即,最高位的权值为2^3 = 8,然后依次是 2^2 = 4,2^1=2, 2^0 = 1。 记住8421,对于任意一个4位的二进制数,我们都可以很快算出它对应的10进制值。 下面列出四位二进制数 xxxx 所有可能的值(中间略过部分) 仅4位的2进制数 快速计算方法 十进制值 十六进值 1111 = 8 + 4 + 2 + 1 = 15 F 1110 = 8 + 4 + 2 + 0 = 14 E 1101 = 8 + 4 + 0 + 1 = 13 D 1100 = 8 + 4 + 0 + 0 = 12 C 1011 = 8 + 0 + 2+ 1 = 11 B 1010 = 8 + 0 + 2 + 0 = 10 A 1001 = 8 + 0 + 0 + 1 = 9 9 .... 0001 = 0 + 0 + 0 + 1 = 1 1 0000 = 0 + 0 + 0 + 0 = 0 0 二进制数要转换为十六进制,就是以4位一段,分别转换为十六进制。 如(上行为二制数,下面为对应的十六进制): 1111 1101 , 1010 0101 , 1001 1011 F D , A 5 , 9 B 反过来,当我们看到 FD时,如何迅速将它转换为二进制数呢? 先转换F: 看到F,我们需知道它是15(可能你还不熟悉A~F这五个数),然后15如何用8421凑呢?应该是8 + 4 + 2 + 1,所以四位全为1 :1111。 接着转换 D: 看到D,知道它是13,13如何用8421凑呢?应该是:8 + 4 + 1,即:1101。 所以,FD转换为二进制数,为: 1111 1011 由于十六进制转换成二进制相当直接,所以,我们需要将一个十进制数转换成2进制数时,也可以先转换成16进制,然后再转换成2进制。 比如,十进制数 1234转换成二制数,如果要一直除以2,直接得到2进制数,需要计算较多次数。所以我们可以先除以16,得到16进制数: 被除数 计算过程 商 余数 1234 1234/16 77 2 77 77/16 4 13 (D) 4 4/16 0 4 结果16进制为: 0x4D2 然后我们可直接写出0x4D2的二进制形式: 0100 1101 0010。 其中对映关系为: 0100 -- 4 1101 -- D 0010 -- 2 同样,如果一个二进制数很长,我们需要将它转换成10进制数时,除了前面学过的方法是,我们还可以先将这个二进制转换成16进制,然后再转换为10进制。 下面举例一个int类型的二进制数: 01101101 11100101 10101111 00011011 我们按四位一组转换为16进制: 6D E5 AF 1B