专栏首页编程入门之C语言C语言编程入门之--第四章C语言基本数据类型

C语言编程入门之--第四章C语言基本数据类型

  导读:C语言程序中经常涉及一些数学计算,所以要熟悉其基本的数据类型。数据类型学习起来比较枯燥,不过结合之前的内存概念,以及本节的字节概念,相信数据类型也就不难理解了。本章从二进制的基本概念开始,然后介绍机器语言通用的计算单位字节,最后再介绍C语言中基本的数据类型及其基本概念。

4.1 二进制、字节

计算机,电子信息专业类的大学课程,肯定会有讲解二进制与十进制转换的课程,本节为了篇幅小一点,只提供windows计算器中进制转换工具的使用方法,希望读者谅解。

4.1.1 二进制

机器之间沟通用的是机器语言,机器语言用二进制数据相互沟通,什么是二进制数据?为什么是二进制数据呢?我们日常生活中比较熟悉的是十进制数据,当数字从1开始不停的加1,加到10的时候再加1就会变成11,那么个位又变回1了,这就叫做满10进1。

  还有比较熟悉的是十二进制,就是我们的时钟了,当时针从1开始不停加到12时,再加1,时针就又变成1了。当然如果有人习惯24小时制,那就理解为二十四进制也可。

图4.1 时钟 

  同理,分针和秒针就是60进制了,满60进1。

  那么,二进制就应该是满2进1咯,对的,举个简单例子:十进制的1,2,3在二进制为01,10,11。可以看到十进制的3在二进制的第一位为1,因为它满2就进1了。

  平时用进制转换可以搬用公式计算,当然快捷的办法是用windows自带的计算器,打开win10系统的计算器软件,选择程序员选项。

注意:不同版本的windows的计算器用法稍微不同,请读者自行了解。

图4.2 windows计算器

  鼠标点击DEC,选择十进制,在DEC中输入123,可以发现二进制BIN为01111011,八进制OCT为173,十六进制为7B,如图4.3所示,

图4.3 计算器进制转换

  计算器基本用法就是这样了。

注意:为什么机器语言是二进制语言?涉及到数字电路方面的知识,说白了CPU,内存这些就是大量的开关组合起来的,开就是1,关就是0,这正是二进制的一种体现。

4.1.2 字节

  二进制最小单位是位(bit),英文有个词组叫做a little bit,意思就是一点点,bit就是最小的位元,比如十进制1的二进制有一个位,十进制2的二进制有两个位“10”,十进制3的二进制也能用两位表示“11”,十进制4的二进制用三个位表示“100”。但是C语言内存中最小数据是1个字节(byte),1个字节有八个位,也就是十进制1的二进制表示为“00000001”,十六进制表示为“0x01”。来个复杂的,十进制的141表示为......打开计算器,可知二进制为“‭10001101‬”,它的十六进制为“0x8D”。

注意:十六进制一般会在数值前添加“0x”,用于区分十进制类似的数,比如十进制69和十六进制69就不相等,十六进制的69等于十进制的105,所以用“0x69”表示十六进制。

  因为1个字节有八位,所以1个字节数值范围在0~255之间,因为当二进制八位数都为1时即“11111111”最大,等于255。

  所以2个字节有十六位,数值范围在0~65535之间,因为当二进制十六位数都为1时即“1111111111111111”最大,等于65535。

  所以4个字节有三十二位,数值范围在0~4294967295‬之间......

  所以8个字节有六十四位,数值范围在......

4.2 基本数据类型

  C语言中基本数据类型有字符型char,布尔型bool,整型int,长整型long,浮点型float等等,对应的还有无符号字符型unsigned char,无符号整型unsigned int等等。

  数据类型有很多,目前就介绍6种,但是如何运用它们呢?我觉得只需要知道这个数据类型的取值范围以及占用多少字节即可。下表请死记硬背:

数据类型

取值范围

占用字节数

char

-128 到 127

1

int

-2,147,483,648 到 2,147,483,647

4

float

1.2E-38 到 3.4E+38

4

unsigned char

0 到 255

1

unsigned int

0 到 4,294,967,295

4

bool

true或者false

2

表4.1 列举一些基本数据类型

注意:当然C语言数据类型不止这些,因为这系列博客只是编程入门篇,不是搬移各个博客的汇总篇,所以数据类型只介绍其中一部分,日后需要了解别的部分应该就能更轻松的了解。

  发现问题:表中char型和unsigned char型的占用字节数都是1个,但是取值范围不同。

  解释:unsigned的英文直译是无符号的,而负数的符号是一个负号“-”,所以无符号就是无负号,就是大于0的数。而有符号,就是能够有负号,可以取值小于0,这样就不难理解他们的取值范围了。

注意:数据类型不加unsigned默认为有符号类型。

  比如char,是可以有负号的char,取值范围可以小于0,由于占的字节数是1个,所以范围是-128~127,数据的变化总量就是|-128|+127=255,正好是一个字节的取值量。

  unsigned char,是无符号的char,取值范围必须大于0,范围是0~255,。同理,int和unsigned int也是这样对比。

  float类型是浮点类型,说白了就是带小数点的,比如float类型的值可以取3.1415,而int类型只能取值为3,后面章节讲到运算方面会再次对比float和int。

  编程的时候会需要做程序判决功能,就会用到bool类型的数据,取值有真true和假false两种。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • C语言编程入门之--第二章编译环境搭建

      导读:C语言程序如何工作,首先需要编译链接成可执行文件,然后就可以运行在不同的环境中,这个“环境”的意思就是比如说,电脑,手机,路由器,蓝牙音箱等等智能设备...

    啊源股
  • Android源码阅读技巧--查找开发者选项中显示触摸操作源码

    在开发者模式下,在开发者选项中,可以勾选“显示触摸操作”,然后只要点击屏幕就会在点击的位置有圈圈显示。如何找到绘制圈圈的代码部分,有什么技巧来阅读代码量...

    啊源股
  • C语言编程入门之--第五章C语言基本运算和表达式-part3

    6. 位运算符 &, ^, | ,! 逻辑运算符 &&, ||, 移位运算符 >>, <<

    啊源股
  • 继谷歌苹果亚马逊之后,微软也被曝人工收集用户语音数据,微软公开承认了!

    8月15日,微软修改隐私条款和相关内容,承认员工和供应商会收听Skype和Cortana的语音数据和录音,来改善微软产品和服务的语音识别、翻译、意图理解等功能。...

    新智元
  • vuejs及相关工具介绍

    王小婷
  • 【干货】机器学习中的五种回归模型及其优缺点

    线性和逻辑斯蒂(Logistic)回归通常是是机器学习学习者的入门算法,因为它们易于使用和可解释性。然而,尽管他们简单但也有一些缺点,在很多情况下它们并不是最佳...

    昱良
  • Snova运维篇(一):基础维护工具和命令

    gpstart工具来启动一个已经由gpinitsystem工具初始化好但已经被gpstop工具停止的Greenplum数据库系统

    snova-最佳实践
  • sqlite 数据类型

    一般数据采用固定的静态数据类型,而SQLite采用的是动态数据类型,会根据存入值自动判断。

    阳光岛主
  • MySQL Master High Available 理论篇(一)

    一、概况 MHA 提供自动master故障转移以及在最短的时间内(10~30秒)提升slave为new master MHA 解决了切换后的数据不一致问题 所有...

    小小科
  • 开发一个简单的脚手架工具

    像我们熟悉的 vue-cli,create-react-app 等脚手架,只需要输入简单的命令 vue init webpack project,即可快速帮我们...

    小皮咖

扫码关注云+社区

领取腾讯云代金券