ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

计算机基础:二进制基础01,比特与字节

计算机基础:二进制基础01,比特与字节 专栏导航上一篇Windows 编程本专栏课件回到目录下一篇计算机基础二进制基础02用二进制来计数本节前言本来呢在写作本节之前我想要讲解位运算的知识来着。可是想了想有可能许多学习计算机编程的人还对二进制知识尚不熟悉。而我们想要学习位运算的知识我们就需要先对二进制八进制十六进制的知识有一定的了解。所以呢我才决定花费几节的篇幅来讲解一下二进制八进制十六进制等等进制的知识。注意啊本节以及随后的几节我都将以二进制基础作为标题的一部分然而我这里的二进制基础不仅仅包含二进制数也会包含有八进制十六进制数的知识。本篇文章既会包含在 Win32 专栏里面也会包含在 MFC 专栏里面。我认为在这俩专栏里面包含有一些个偏向系统底层的知识是必要的。而进制的知识我认为它属于一种系统底层的知识。学习数字电路需要了解它学习微机接口汇编语言都需要了解它。如果你去学习 Linux内核那么你很有可能会遇到许多的有关位运算的代码。无论是在 C 语言代码文件里面还是在汇编语言源文件里面你都有可能会遇到位运算的代码。如果你不了解位运算的知识那么好多的代码我估计你是看不懂的。而想要学会位运算的知识我认为一个必要的基础就是二进制八进制十六进制等等的进制知识。Win32 API或者时髦一点Windows API里面也是经常会用到位运算的知识。MFC 是对 Windows API 的一种封装里面也会遇到许多的位运算代码。所以呢学习 WIndows API 知识学习 MFC 知识我们是需要了解位运算的知识的我们也需要学习更为基础的进制知识。在 Win32 和 MFC 知识里面不仅会涉及位运算的知识也会涉及字符串操作函数会用到链表顺序表的知识会用到递归算法还会用到数学三角函数的知识。所以我想Win32 与 MFC 的学习它其实是一个综合性很强难度很高的一种学习。所以在正式开始学习 Win32 与 MFC 的知识之前或者是已经开始学习了在这种情况下我认为大家有必要作出一番心理准备。没有足够的耐心没有攻克难点知识的准备这一块知识大概你很难将其学好。在讲解 Win32 与 MFC 的知识的时候如果我认为某一块知识是大家需要具备的基础知识点那么我会去讲解它。我也希望大家在学习 Win32 与 MFC 知识的时候能够将必要的计算机基础知识都给学习好。进制知识位运算字符串操作函数有可能有的同学已经学习过了。有可能有的同学尚未学习过。在这里我统一地来进行讲解。以便尚未学习过这些知识的同学能够具备必要的基础。本节的前言部分很长下面我们开始本节的正文。一. 数字电路与01我们目前使用的计算机基本上都是数字计算机也就是采用数字电路知识制作出数字集成电路芯片CPU。并且以CPU为核心组建起一台完整的计算机。与数字集成电路相对的还有另外一种集成电路芯片那就是模拟集成电路芯片。这个不是我们要讲述的重点大家了解一下即可。在数字电路中保存一个数据的最小的单位是bit翻译为比特。这里的比特它是一个单位。比如说一个苹果个数就是单位。一间屋子间是单位。一斤大米斤是单位。在计算机里面我们将数据保存在很小很小的屋子里面这个小屋子就叫做比特。一个比特里面可以是两个数之一一个是 0一个是 1。一般情况下用 1 来表示高电压用 0 来表示低电压。这叫做正逻辑。有时我们也将一个比特称作一个位。或者在我的讲解中我也经常将比特与位这两个概念连起来使用把它叫做比特位。还有另外一种叫做负逻辑的东西它用 0 来表示高电压用 1 来表示高电压。在我们这里我们使用的是正逻辑。我们将一组组合在一起将其成为码英文为code。用这样的码来表示数字字母符号指令等等对的东西。在计算机当中存储数据的最小单位是比特而基本单位则是字节英文称作 byte 。将 8 个连续的比特位组合在一起就构成了一个字节。注意是8个连续的比特而且每一个比特里面的数值依然是说要么是0要么是1 。比如说 00101011我们将其看作是一个二进制数。由于上面的二进制数有 8 个所以正好是一个字节。将8个01组合直接写出来可能会不好辨认。为了辨认的方便在本专栏中我们也可能会以如下的几种方式书写上面的二进制数。方式1 0010 1011方式2 0010_1011由于一个比特它是用来表示一个二进制数的状态的而且二进制数可以包含不同的数位。就像我们常用的十进制数可以包含着个位十位百位一样。所以呢我们可以一个二进制数中的某一位称作是一个二进制位。至于这个位叫什么我们以后会讲。在 C 语言中有两种数据类型可以用于对字节类型的数据进行建模。它们分别是 signed char 和 unsigned char。在基础的 C 语言和 C 的学习中我们会用到 char 这一数据类型而很少用 signed char 或者 unsigned char 来声明变量。char 类型在不同的编译器中定义不同。有的编译器将 char 对应为 signed char。在我们的讲解中我们采用这一假定认为 char 就是signed char。在 C 语言中除了单字节的 char 类型之外还有双字节类型的变量4字节类型的变量和8字节类型的变量。一般地双字节类型类型的变量用 signed short 或 unsigned short 来声明。其中signed short 为带符号短整型unsigned short 为无符号短整型。signed short简记为 short。不论是否带符号短整型都是占据着两个字节。一个字节为 8 个比特。一个字节包含 8 个二进制位。每一个比特里面的值要么是0要么是1 。或者说每一个二进制位的值要么是0要么是1 。两个字节为 16 比特它是 16 个连续的比特位组合在一起而构成的用来保存数据的东西。两个字节包含 16 个二进制位。每一个比特里面依然是说要么是0要么是1 。或者说每一个二进制位的值要么是0要么是1 。四个字节类型的变量用 signed int 或者 unsigned int 来声明。其中signed int 表示带符号整型unsigned int 为无符号整型。signed int 简记为 int。无论是否带有符号整型变量都是占据着4个字节的大小。四个字节它是 32 个连续的比特构成的用来保存数据的东西。四个字节包含 32 个二进制位。每一个比特老样子里面要么是0要么是1 。或者说每一个二进制位的值要么是0要么是1 。以上所述signed char 与 unsigned charsigned short 与 unsigned shortsigned int 与unsigned int都是用来存储整数的变量。C 语言和 C 除了可以表示整数之外也可以表示浮点数。在 C 语言中 doubole 类型的变量占据着 8 个字节。double 类型的变量属于是浮点型变量。八个字节它是 64 个连续的比特构成的用来保存数据的东西。八个字节包含 64个二进制位。每一个比特里面要么是0要么是1 。或者说每一个二进制位的值要么是0要么是1 。在学习汇编语言知识学习英特尔单指令多数据SIMDSingle Instruction Multiple Data指令时我们可能还会接触到 128 位的数据类型。128 位的数据类型据我所知 C 语言里面还没有这一数据类型。汇编语言里面会有这一部分的知识。二. 二进制有什么用我们为何要去学习二进制因为计算机就是用二进制来表示数据的。为什么要用二进制来表示数据呢在计算机中在数字电路中一般地会采用两种电平来表示某一个比特的状态高电平或低电平。既然只有两种状态那么我们就可以用 0 和 1 来表示它们。所谓的高低电平它是说在数字电路中将某一个电压范围内的电压值视为高电平将另一个电压范围内的电压值视为低电平。比如说我们将2~3.3V 的电压范围规定为 高电平。将 0~0.8V 的电压值规定为低电平。高低电平说完了我们发现其中还有 0.8~2V 的空挡。这个空挡怎么处理呢办法就是不让它出现。只允许出现高电平和低电平所对应的电压值范围。到这里高低电平我就讲完了。表示单一比特的状态可以用一位的二进制数来表示。表示连续的 8 个比特的电平状态我们可以用 char 型整数来表示它。表示连续的 32 个比特的电平状态我们可以用 unsigned int 类型的整数来表示它。由于二进制数与数字电路中的高低电平可以一一对应所以我们可以很方便地用二进制数来表示数字电路的状态并且也可以很方便地用二进制数来表示数字电路的逻辑运算。二进制它是计算机的基础逻辑。学习二进制是为了了解计算机的逻辑。同时呢学习二进制知识可以为后面的位运算知识打下基础。结束语本节知识希望大家能学好。专栏导航上一篇Windows 编程本专栏课件回到目录下一篇计算机基础二进制基础02用二进制来计数
返回列表