当前位置: 首页 > article >正文

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

专栏导航

本节文章分别属于《Win32 学习笔记》和《MFC 学习笔记》两个专栏,故划分为两个专栏导航。读者可以自行选择前往哪个专栏。

(一)WIn32 专栏导航

上一篇:WIn32 笔记:本专栏课件

回到目录

下一篇:无

(二)MFC 专栏导航

上一篇:MFC笔记:本专栏课件

回到目录

下一篇:无

本节前言

本来呢,在写作本节之前,我想要讲解位运算的知识来着。可是,想了想,有可能,许多学习计算机编程的人,还对二进制知识尚不熟悉。而我们想要学习位运算的知识,我们就需要先对二进制,八进制,十六进制的知识,有一定的了解。所以呢,我才决定花费几节的篇幅,来讲解一下二进制,八进制,十六进制等等进制的知识。

注意啊,本节,以及随后的几节,我都将以二进制基础作为标题的一部分,然而,我这里的二进制基础,不仅仅包含二进制数,也会包含有八进制,十六进制数的知识。

本篇文章,既会包含在 Win32 专栏里面,也会包含在 MFC 专栏里面。我认为,在这俩专栏里面,包含有一些个偏向系统底层的知识,是必要的。

而进制的知识,我认为,它属于一种系统底层的知识。学习数字电路需要了解它,学习微机接口,汇编语言,都需要了解它。

如果你去学习 Linux内核,那么,你很有可能会遇到许多的有关位运算的代码。无论是在 C 语言代码文件里面,还是在汇编语言源文件里面,你都有可能会遇到位运算的代码。如果你不了解位运算的知识,那么,好多的代码,我估计,你是看不懂的。而想要学会位运算的知识,我认为,一个必要的基础,就是二进制,八进制,十六进制等等的进制知识。

Win32 API,或者时髦一点,Windows API,里面也是经常会用到位运算的知识。MFC 是对 Windows API 的一种封装,里面也会遇到许多的位运算代码。所以呢,学习 WIndows API 知识,学习 MFC 知识,我们是需要了解位运算的知识的,我们也需要学习更为基础的进制知识。

在 Win32 和 MFC 知识里面,不仅会涉及位运算的知识,也会涉及字符串操作函数,会用到链表,顺序表的知识,会用到递归算法,还会用到数学三角函数的知识。

所以,我想,Win32 与 MFC 的学习,它其实是一个综合性很强,难度很高的一种学习。所以,在正式开始学习 Win32 与 MFC 的知识之前,或者是已经开始学习了,在这种情况下,我认为,大家有必要作出一番心理准备。

没有足够的耐心,没有攻克难点知识的准备,这一块知识,大概你很难将其学好。

在讲解 Win32 与 MFC 的知识的时候,如果我认为,某一块知识,是大家需要具备的基础知识点,那么,我会去讲解它。我也希望,大家在学习 Win32 与 MFC 知识的时候,能够将必要的计算机基础知识,都给学习好。

进制知识,位运算,字符串操作函数,有可能,有的同学已经学习过了。有可能,有的同学尚未学习过。在这里,我统一地来进行讲解。以便,尚未学习过这些知识的同学,能够具备必要的基础。

本节的前言部分很长,下面,我们开始本节的正文。

一.    数字电路与0,1

我们目前使用的计算机,基本上都是数字计算机,也就是采用数字电路知识,制作出数字集成电路芯片,CPU。并且以CPU为核心,组建起一台完整的计算机。

与数字集成电路相对的,还有另外一种集成电路芯片,那就是模拟集成电路芯片。这个,不是我们要讲述的重点,大家了解一下即可。

在数字电路中,保存一个数据的最小的单位是bit,翻译为比特。一个比特,可能是两个数之一,一个是 0,一个是 1。一般情况下,用 1 来表示高电压,用 0 来表示低电压。这叫做正逻辑。

有时,我们也将一个比特,称作一个位。或者,在我的讲解中,我也经常将比特与位这两个概念连起来使用,把它叫做比特位。

还有另外一种叫做负逻辑的东西,它用 0 来表示高电压,用 1 来表示高电压。

在我们这里,我们使用的,是正逻辑。

我们将一组组合在一起,将其成为码,英文为code。用这样的码来表示数字,字母,符号,指令等等对的东西。

在计算机当中,存储数据的最小单位是比特,而基本单位,则是字节,英文称作 byte 。将 8 个连续的比特位组合在一起,就构成了一个字节。

比如说, 0010 1011,我们将其看作是一个二进制数。由于上面的二进制有 8 个,所以,正好是一个字节。

由于一个比特,它是用来表示一个二进制数的状态的,而且二进制数,可以包含不同的数位。就像我们常用的十进制数可以包含着个位,十位,百位一样。所以呢,我们可以一个二进制数中的某一位,称作是一个二进制位。至于这个位叫什么,我们以后会讲。

在 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 个二进制位。

两个字节,为 16 比特,它是 16 个连续的比特位组合在一起,而构成的,用来保存数据的东西。两个字节,包含 16 个二进制位。

四个字节类型的变量,用 signed int 或者 unsigned int 来声明。其中,signed int 表示带符号整型,unsigned int 为无符号整型。signed int 简记为 int。无论是否带有符号,整型变量,都是占据着4个字节的大小。

四个字节,它是 32 个连续的比特构成的,用来保存数据的东西。四个字节,包含 32 个二进制位。

以上所述,signed char 与 unsigned char,signed short 与 unsigned short,signed int 与unsigned int,都是用来存储整数的变量。C 语言和 C++ 除了可以表示整数之外,也可以表示浮点数。

在 C 语言中, doubole 类型的变量,占据着 8 个字节。double 类型的变量,属于是浮点型变量。

八个字节,它是 64 个连续的比特构成的,用来保存数据的东西。八个字节,包含 64个二进制位。想要

在学习汇编语言知识,学习英特尔单指令多数据(SIMD,Single Instruction Multiple Data)指令时,我们可能还会接触到 128 位的数据类型。128 位的数据类型,据我所知, C 语言里面,还没有这一数据类型。汇编语言里面,会有这一部分的知识。

二.    二进制有什么用?

我们为何要去学习二进制?因为计算机就是用二进制,来表示数据的。

为什么要用二进制来表示数据呢?

在计算机中,在数字电路中,一般地,会采用两种电平,来表示某一个比特的状态,高电平或低电平。既然只有两种状态,那么,我们就可以用 0 和 1 来表示它们。

所谓的高低电平,它是说,在数字电路中,将某一个电压范围内的电压值,视为高电平,将另一个电压范围内的电压值,视为低电平。比如说,我们将2~3.3V 的电压范围,规定为 高电平。将 0~0.8V 的电压值,规定为低电平。

高低电平说完了,我们发现,其中还有 0.8~2V 的空挡。这个空挡,怎么处理呢?办法就是,不让它出现。只允许出现高电平和低电平所对应的电压值范围。

到这里,高低电平,我就讲完了。

表示单一比特的状态,可以用一位的二进制数来表示。表示连续的 8 个比特的电平状态,我们可以用 char 型整数来表示它。表示连续的 32 个比特的电平状态,我们可以用 unsigned int 类型的整数来表示它。

由于二进制数与数字电路中的高低电平可以一一对应,所以,我们可以很方便地用二进制数来表示数字电路的状态,并且也可以很方便地用二进制数来表示数字电路的逻辑运算。

二进制,它是计算机的基础逻辑。学习二进制,是为了了解计算机的逻辑。

同时呢,学习二进制知识,可以为后面的位运算知识打下基础。

结束语

本节知识,希望大家能学好。

专栏导航

本节文章分别属于《Win32 学习笔记》和《MFC 学习笔记》两个专栏,故划分为两个专栏导航。读者可以自行选择前往哪个专栏。

(一)WIn32 专栏导航

上一篇:WIn32 笔记:本专栏课件

回到目录

下一篇:无

(二)MFC 专栏导航

上一篇:MFC笔记:本专栏课件

回到目录

下一篇:无


http://www.kler.cn/a/563089.html

相关文章:

  • 说说 Spring MVC 的执行流程
  • 全国各省山峰分布SHP数据详解及其在科学研究与旅游规划中的应用
  • 排序算法适合的场景
  • ffmpeg av_find_input_format的作用
  • Linux通过设备名称如何定位故障硬盘
  • 洛谷 B2006:地球人口承载力估计 ← float 类型
  • WebView中操作视频播放,暂停
  • Redis 中有序集合(Sorted Set)的使用方法
  • 用PySpark和PyTorch实现跨境支付Hive数据仓库的反洗钱数据分析
  • 物联网+大数据,智慧公租房管理系统构建未来社区
  • 嵌入式硬件篇---阶跃函数冲激函数
  • 分布式主键生成服务
  • 【清华大学】DeepSeek从入门到精通系列教程 第五版:DeepSeek与AI幻觉 pdf文档下载
  • 聊聊制造企业数字化质量管理的业务架构与流程
  • Qt | Excel创建、打开、读写、另存和关闭
  • 大模型应用: 多模态交互
  • 给虚拟机配置IP
  • 力扣-动态规划-494 目标和
  • html中的css
  • Windows版FFmpeg使用及B站视频下载示例python源码