导读: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两种。

C语言编程入门之--第四章C语言基本数据类型的更多相关文章

  1. C语言编程入门之--第五章C语言基本运算和表达式-part1

    导读:程序要完成高级功能,首先要能够做到基本的加减乘除.本章从程序中变量的概念开始,结合之前学的输出函数和新介绍的输入函数制作简单人机交互程序,然后讲解最基础的加减法运算,自制简单计算器程序练手. 5 ...

  2. C语言编程入门之--第五章C语言基本运算和表达式-part2

    5.1.4 再来一个C库函数getchar吸收回车键 回车键也是一个字符,在使用scanf的时候,输入完毕要按下回车键,这时候回车键也会被输入到stdin流中,会搞乱我们的程序. 注意:stdin是输 ...

  3. C语言编程入门之--第五章C语言基本运算和表达式-part3

    5.3  挑几个运算符来讲 常用的运算符除了加减乘除(+-*/)外,还有如下: 注意:以下运算符之间用逗号隔开,C语言中也有逗号运算符,这里不讲逗号运算符. 1. 赋值运算符 =,+=,*= 2. 一 ...

  4. C语言编程入门之--第六章C语言控制语句

    导读:本章带读者理解什么是控制语句,然后逐个讲解C语言常用的控制语句,含有控制语句的代码量多起来后就要注意写代码的风格了,本章末节都是练习题,大量的练习才能掌握好控制语句的使用. 6.1 什么是控制语 ...

  5. C语言编程入门之--第五章C语言基本运算和表达式-part4

    5.3.5 和二进制极为密切的运算符 本小节的运算符需要借助二进制概念来理解. 二进制数据中,比如一个字节的数据,它的十进制为228,二进制就为11100100,如图5.11, 注意:如果不懂怎么转换 ...

  6. C语言编程入门之--第三章编写第一个C语言程序

    第三章 编写第一个C语言程序 导读:一般学一门计算机语言的第一堂上机课(“上机”顾名思义,上了计算机),就是往屏幕输出“hello world”,本章也不例外. 1.1 Hello,World! 这一 ...

  7. C语言编程入门之--第一章初识程序

    第一章 初识程序 导读:计算机程序无时不刻的影响着人类的生活,现代社会已经离不开程序,程序的作用如此巨大,那么程序到底是什么呢?本章主要讨论程序的概念,唤起读者对程序的兴趣,同时对C语言程序与其它语言 ...

  8. linux 操作系统下c语言编程入门

    2)Linux程序设计入门--进程介绍 3)Linux程序设计入门--文件操作 4)Linux程序设计入门--时间概念 5)Linux程序设计入门--信号处理 6)Linux程序设计入门--消息管理  ...

  9. java并发编程的艺术——第四章总结

    第四章并发编程基础 4.1线程简介 4.2启动与终止线程 4.3线程间通信 4.4线程应用实例 java语言是内置对多线程支持的. 为什么使用多线程: 首先线程是操作系统最小的调度单元,多核心.多个线 ...

随机推荐

  1. 14 CSS权重深入

    <!-- 继承说明: (1)进行样式选择时,不指定标签的话,该选择器是继承来的. (2)继承的选择器的优先级为0,和标签选择器的优先级无可比性. --> <!DOCTYPE html ...

  2. 关于linux网卡消失的问题

    首先我也是一名学生,在学习的过程Linux的过程中,因为老师要求配置hadoop集群所以就匆匆忙忙的上手了,但是在配置网络的问题时遇到了网卡消失的问题 我在网上询问了许多的人,但是还是没有找到一个很好 ...

  3. 基于Google Earth Engine的全国地表温度反演

    国内研究landsat8温度反演的人员很多,但是现有算法一般都是一景为例子,进行开展. 这有一个局限性,当研究的尺度很大时,就需要比较大的运算量了,例如全省温度,全国温度,全球温度,当然大家可能会说, ...

  4. PWN 菜鸡入门之 shellcode编写 及exploid-db用法示例

    下面我将参考其他资料来一步步示范shellcode的几种编写方式 0x01 系统调用 通过系统调用execve函数返回shell C语言实现: #include<unistd.h> #in ...

  5. MyBatis从入门到精通(二):MyBatis XML方式的基本用法之Select

    最近在读刘增辉老师所著的<MyBatis从入门到精通>一书,很有收获,于是将自己学习的过程以博客形式输出,如有错误,欢迎指正,如帮助到你,不胜荣幸! 1. 明确需求 书中提到的需求是一个基 ...

  6. 先订一个小目标,把微信小程序搞懂

    目标:系统性学习微信小程序. 第一阶段:熟悉微信小程序及前端开发(结合web前端学习) 第二阶段:了解设计及后端 第三阶段:学习后端.

  7. Android之LinearLayout布局下怎么让按钮固定在底部

    <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=&quo ...

  8. kuangbin专题 专题一 简单搜索 迷宫问题 POJ - 3984

    题目链接:https://vjudge.net/problem/POJ-3984 这个题目,emm,上代码,看的估计应该是刚开始接触搜索的,我带点注释,你能慢慢理解. #include <ios ...

  9. @ApiImplicitParam注解

    @Api:用在请求的类上,表示对类的说明 tags="说明该类的作用,可以在UI界面上看到的注解" value="该参数没什么意义,在UI界面上也看到,所以不需要配置&q ...

  10. node调试工具--nodemon使用简介

    这个工具和node-supervisor基本上是一致的,但是其功能比较强大,个人觉得在开发环境还是用 nodemon,因为配置比较方便,文档也很清晰.所以这里先主要讲 nodemon. nodemon ...