内容正文:
2.1节:C语言的基本数据类型与整型常量
编程语言基础——C语言
同步精品课堂
高教版(第5版)
掌握国家标准《机械制图》中有关图幅、比例、字体图线等基本规定。
教学目标
一
03
掌握常用(二、八、十、十六)进制之间的转换方法
掌握整型数据在内存中的存放形式
04
掌握整型常量的表示方法
02
掌握C语言中的常用数据类型
01
教学重难点
二
03
掌握常用(二、八、十、十六)进制之间的转换方法
掌握正整数、负整数在内存中补码的表现形式
04
掌握整型常量的表示方法(八、十、十六进制)
02
了解C语言中常用的数据类型及它们的取值范围
01
导入新课
三
问题 1:你手机里的信息分哪几类?
问题 2:为什么要分类?
问题 3:C语言中的数据要分成那些类型呢?
思考:
在生活中,有哪些“分类”现象?请你根据课前预习来回答下列三个问题。
新知讲授
四
知识点1:C语言的基本数据类型
我们在现实生活中会遇到不同类型的数据,比如数据有整数和实数之分、单个字符和字符串之分。在C语言中,常用的数据类型有“整型、浮点型、字符型、字符串型”等多种,例如789、1234.56、1.25e6、‘a’、“C语言”分别属于不同的数据类型,其中,789是整型常量,1234.56和125e6是浮点型常量,‘a’是字符型常量,“C语言”是字符串型常量。
接下来我们将一起来认识C语言的基本数据类型。
概述
新知讲授
四
知识点1:C语言的基本数据类型
概述
1、C语言常用的标准数据类型
类型标识符 名 称 长度(B) 范 围
char 字符型 1 -27 ~ +27-1 (-128 ~ +127)
short 短整型 2 -215 ~ +215-1 (-32768~32767)
int 或long 长整型 4 -231 ~ +231-1
(-2147483648~2147483647)
float 浮点型(实型) 4 10-37 ~10+38 (绝对值)
double 双精度浮点型 8 10-307 ~10+308(绝对值)
新知讲授
四
知识点1:C语言的基本数据类型
概述
1、C语言常用的标准数据类型
【说明】
①在Dev-C++或Microsoft Visual C中,int等同long。
②如果在char或short或int类型标识符前面加上关键字unsigned,则表示无符号的整数类型,其值为非负整数,它们表示的值范围是:
unsigned char 0~255
unsigned short 0~65535 0~216-1
unsigned long int 0~4 294 967 295 0~232-1
新知讲授
四
知识点2:整型常量
概述
1、常量和符号常量
常量的概念:
在程序的运行过程中,其值保持不变的量称为常量。
什么是“符号常量”?
常量可以使用一个标识符来表示,称为符号常量,可以在程序开头使用#define命令来定义。例如:#define PI 3.1415926
此后,只要是在文件中出现的PI均可使用3.1415926来代替。
#include<stdio.h>
#define PRICE 30
void main()
{
int num,total;
num=10;
total=num*PRICE;
printf("total=%d
",total);
}
新知讲授
四
知识点2:整型常量
概述
2、整型常量的表示方法
【概述】
整型常量即“整常数”。在C语言中,整常数可以用以下3种形式表示:
(1)十进制整数,如123、-456、42。在C语言中,一个整数无任何修饰前缀,该数即十进制整数。
(2)八进制整数,以“0”开头的数是八进制数。如0123表示八进制数123,即(123)8 ,其值为1×82+2×81+3×80,等于十进制数83。
(3)十六进制整数,以“0x”开头的数是十六进制数。如0x123,代表十六进制数123,即:
(123)16=1×162+2×161+3×160=256+32+3=291。
例 子 说 明
-1234 十进制整型常量 (包含数字0~9)
01234 八进制整型常量(以0开头,包含数字0~7)
0x1234 十六进制整型常量
(以0x或0X开头,包含数字0~9、字母A~F或a~f)
0L long型十进制整型常量(以l或L结尾)
新知讲授
四
知识点2:整型常量
概述
3、常用进制的转换
(1)二、八、十六进制转十进制
方法:按权展开相加(其他进制转十进制)
例:
(1010.101)2=1*+0* +1* +0* +1* +0* +1* =(10.625)10
(1A.C)16=1* +10* +12* =(26.75)10
(12.3)8=1* +2* +3* =(10.375)10
新知讲授
四
知识点2:整型常量
概述
3、常用进制的转换
(2)十进制转其他进制
整数部分反复除,取余数,逆序排;小数部分反复乘,取整数,顺序排。
例:
整数部分(13) 小数部分(0.6875)
13/2=6……1 0.6875*2=1.375
6/2=3……0 0.375*2=0.75
3/2=1……1 0.75*2=1.5
1/2=0……1 0.5*2=1.0
13=(1101)2 0.6875=(0.1011)2
所以十进制数13.6875转换成二进制等于1101.1011
重点掌握整数部分的转换即可
新知讲授
四
知识点2:整型常量
概述
3、常用进制的转换
(3)二进制转换为八、十六进制
方法:以小数点为中心,向两边按3位(或四位)分组,最后一组不足时用0补足,然后把3位(或4位)二进制转换为1位八进制数(或十六进制数)。
例:(1010101010.1010101)2=( )8
(1010101010.1010101)2=( )16
001 010 101 010 . 101 010 100
1 2 5 2 . 5 2 4
0010 1010 1010 . 1010 1010
2 A A . A A
1 2 3 4 5 6 7 8 9
1 10 11 100 101 110 111 1000 1001
10
(A) 11
(B) 12
(C) 13
(D) 14
(E) 15
(F)
1010 1011 1100 1101 1110 1111
新知讲授
四
知识点2:整型常量
概述
3、常用进制的转换
(4)八、十六进制转换为二进制
方法:把一位八进制(或十六进制)转换为3位(或4位)二进制数,不够3位(或4位)用0补足。
例:(1357.246)8=( )2
例:(147.9BD)16=( )2
1 3 5 7 . 2 4 6
001 011 101 111 . 010 100 110
1 4 7 . 9 B D
0001 0100 0111 . 1001 1011 1101
新知讲授
四
知识点2:整型常量
概述
4、整型数据在内存中的存放形式
数据在内存中是以二进制形式存放的。如果定义了一个整型变量:
int i; /*定义为整型变量,此时Visual C++则为i变量分配4字节存储空间*/
i=10; /*给i赋以整数10,并存入i变量所在内存空间,如下表所示*/
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0
任何类型的数据在计算机中都是以二进制补码形式存储的。short型数据在内存中占16位,int或long int型数据在内存中占32位,其中最高位为符号位(无符号型除外),符号位为1则表示该数为负数,为0则表示该数为正数。
新知讲授
四
知识点2:整型常量
概述
4、整型数据在内存中的存放形式(补码的计算方法)
正整数的补码等于其原码(二进制码),负数的补码等于其原码的反码加1。
正数
负数
0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 1
正数“83”的补码,即83的二进制数
求
-83的补码 原码(83) 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 1
反码 1 1 1 1 1 1 1 1 1 0 1 0 1 1 0 0
加1 1 1 1 1 1 1 1 1 1 0 1 0 1 1 0 1
新知讲授
四
知识点2:整型常量
概述
4、整型数据在内存中的存放形式(补码的计算方法)
在计算机中,“-10”的补码是?
原码 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0
反码 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1
加1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 0
取-10的绝对值得到“10”
求10的二进制形式得到原码
0000 0000 0000 1010(一个整数占16位)
对“1010”取反得到反码
1111 1111 1111 0101(一个整数占16位)
再加“1”得到补码
1111 1111 1111 0110
试一试:
求:-14的补码
求:-63的补码
师生互动
五
整型常量 “找茬” 挑战赛
【规则】
(1)全班分为 3 组,每组轮流指派 1 名代表答题。
(2)屏幕将展示 6 个整型常量写法,代表需判断 “正确” 或 “错误”,并说明理由。
(3)回答正确得 1 分,错误不扣分,最终得分最高组获 “代码小能手” 称号。
序号 整型常量写法 小组判断
(正确 / 错误) 说出理由
1 123
2 012
3 0xG5
4 -456
5 12.3
6 018
随堂练习
六
1.一个short类型变量在内存中存储的二进制补码为 1111 1111 1111 1111,其十进制值是( )
A. 65535
B. 32767
C. -1
D. 255
答案:C
解析: 对于有符号的short类型(通常是16位),最高位是符号位。补码为全1,对应的原码是1000 0000 0000 0001,即-1。
随堂练习
六
2.下列属于合法八进制整数常量的是( )
A. 089
B. 0x89
C. 123L
D. 0777
答案:D
解析:八进制常量以0开头,且每位数字只能是0-7。089包含数字9,非法。0x89是十六进制常量。123L是十进制长整型常量。0777是合法的八进制常量。
随堂练习
六
3.十进制数 -10 的8位二进制补码是( )
A. 10001010
B. 11110101
C. 11110110
D. 00001010
答案:C
解析:先求10的二进制原码:00001010。取反得反码:11110101。反码加1得补码:11110110。
随堂练习
六
4.十六进制数 0x2A 转换为十进制数是( )
A. 32
B. 42
C. 52
D. 62
答案:B
解析: 0x2A = 2 * 161 + 10 * 160 = 32 + 10 = 42。
随堂练习
六
5.以下选项中的整型常量,表示的值最大的是( )
A. 0275
B. 175
C. 0xAF
D. 0b10101111
答案:A
解析:0275(八进制) = 2 * 82 + 7 * 81 + 5*80 = 189(十进制)。175(十进制)=175。0xAF(十六进制)=10 * 161+15*160=175。0b10101111(二进制)=128+32+8+4+2+1=175。
随堂练习
六
6.十进制数 100 转换为二进制数是( )
A. 1100010
B. 1100100
C. 1100110
D. 1101000
答案:B
解析:100 / 2 = 50 ... 0, 50/2=25...0, 25/2=12...1, 12/2=6...0, 6/2=3...0, 3/2=1...1, 1/2=0...1。从下往上取余数:1100100。
随堂练习
六
7.八进制数 076 转换为十进制数的结果是( )
A. 76
B. 62
C. 64
D. 126
答案:B
解析: 076(八进制) = 7 * 81 + 6 * 80 = 56 + 6 = 62。
随堂练习
六
8.在16位编译系统中,int型数据占2个字节,则 unsigned int型数据的取值范围是( )
A. -32768 ~ 32767
B. 0 ~ 65535
C. -256 ~ 255
D. 0 ~ 4294967295
答案:B
解析:16位无符号整数的范围是 0 到 2^16 - 1,即 0 到 65535。
随堂练习
六
9.下列选项中,属于 C 语言长整型数据类型关键字的是( )
A. char
B. short
C. int
D. long
答案:D
解析:long是长整型的关键字,char是字符型,short是短整型,int是整型。
随堂练习
六
10.二进制数1101转换为十六进制数是( )
A. D
B. E
C. 13
D. 14
答案:A
解析:将二进制1101从右往左每 4 位分组(不足 4 位左边补 0,这里刚好 4 位),1101对应的十六进制是D(13的十六进制表示为D)。
随堂练习
六
11.十六进制数0x2A转换为八进制数是( )
A. 52
B. 53
C. 54
D. 55
答案:A
解析:先将十六进制0x2A转换为二进制00101010,再分组为每 3 位(从右往左)010 101 0(左边补 0 为010 101 0),转换为八进制2 5 2,即52。
课堂小结
七
谢谢
$