第二章基本数据类型及运算 >c数据类型概述 >基本数据类型 运算符和表达式 混合运算与类型转换 >数据的输入输出 顺序程序设计举例
➢ C数据类型概述 ➢ 基本数据类型 ➢ 运算符和表达式 ➢ 混合运算与类型转换 ➢ 数据的输入输出 ➢ 顺序程序设计举例 第二章 基本数据类型及运算
2.1数据类型概述
2.1 数据类型概述
问题1数据在计算机中是如何存储的? 冯·诺依曼计算机 指令和数据都存储在计算机内存中 都以二进制( Binary)形式存储在肉存中 输入设裔代码和数据 存储器 输出数据 输出设备 控制器 运算器 CPU
◼ 冯·诺依曼计算机 ⚫ 指令和数据都存储在计算机内存中 ⚫ 都以二进制(Binary)形式存储在内存中 问题1 数据在计算机中是如何存储的?
问题2为什么用二进制存储? 二进制在电器元件中易实现 ●双稳态元件很多 ●电压的高与低 ●电容器的充电与放电 脉冲的有与无 ●晶体管的导通与截止 二进制运算较十进制简单 易于在物理上实现存储 与逻辑真假一一对应 ●用1表示真,0表示假
◼ 二进制在电器元件中易实现 ⚫ 双稳态元件很多 ⚫ 电压的高与低 ⚫ 电容器的充电与放电 ⚫ 脉冲的有与无 ⚫ 晶体管的导通与截止 ◼ 二进制运算较十进制简单 ◼ 易于在物理上实现存储 ◼ 与逻辑真假一一对应 ⚫ 用1表示真,0表示假 问题2 为什么用二进制存储?
问题3何为二进制? 十进制数 ●用0-9这10个数码表示十进制数的一个数位 ●逢10进1、借1当10 ●可表示为10的多项式之和 ◆如123.456即 ◆1×102+2×101+3×10+4×10-1+5×10-216×10 二进制数 ●用0-1这2个数码表示十进制数的一个数位 ●逢2进1、借1当2 ●可表示为2的多项式之和 ◆如(101.101)2即 ◆1×22+0×21+1×20+1×2-1+0×2-2+1×2-3
◼ 十进制数 ⚫ 用0-9这10个数码表示十进制数的一个数位 ⚫ 逢10进1、借1当10 ⚫ 可表示为10的多项式之和 ◆如123.456即 ◆ 1×102+2×101+3×100+4×10-1+5×10-2+6×10-3 问题3 何为二进制? ◼ 二进制数 ⚫ 用0-1这2个数码表示十进制数的一个数位 ⚫ 逢2进1、借1当2 ⚫ 可表示为2的多项式之和 ◆如(101.101)2即 ◆ 1×2 2+0×2 1+1×2 0+1×2 -1+0×2 -2+1×2 -3
问题4如何表示二进制的正负? 使用二进制数的最高位(最左位)表示正负,称为符号位 0表示正数,1表示负数 ●(123)10即 000000001101 ●(-123)10 1000000001111011 加减法表示不方便 如何区别0? 0 0000000000000000 1000000000000000 以补码形式存储负数 ●便于用统一的形式表示0 便于实现加减法运算
◼ 使用二进制数的最高位(最左位)表示正负,称为符号位 ◼ 0表示正数,1表示负数 ⚫ (123)10即 0000000001111011 ⚫ (-123)10即 1000000001111011 ◼ 加减法表示不方便 ◼ 如何区别0? ⚫ +0 0000000000000000 ⚫ -0 1000000000000000 ◼ 以补码形式存储负数 ⚫ 便于用统一的形式表示0 ⚫ 便于实现加减法运算 问题4 如何表示二进制的正负?
问题4如何表示二进制的正负? 补码 正数和零的原码、反码、补码均相同 负数:原码->反码(原码按位取反->补码(=反码+1) ●例如:(-123) 10 ◆原码 0000000001111011 ◆反码: 1111111110000100 ◆补码 l111111110000101 例如:(-1)10 ◆原码: 0000000000000001 ◆反码 1111111111111110 ◆补码 1111111111111111
◼ 补码 ◼ 正数和零的原码、反码、补码均相同 ◼ 负数:原码 -> 反码(原码按位取反) -> 补码(=反码+1) ⚫ 例如: (-123)10 ◆原码: 0000000001111011 ◆反码: 1111111110000100 ◆补码: 1111111110000101 ⚫ 例如: (-1)10 ◆原码: 0000000000000001 ◆反码: 1111111111111110 ◆补码: 1111111111111111 问题4 如何表示二进制的正负?
问题5数据在程序中是如何表示的? 二进制的压缩表示:八进制、十六进制 二进制和八进制如何相互转换? 3位一组,直接转换 二进制。000001-010011°100101-110111 八进制。01.234 (1100110 分组:1,111,11,110,000,101 转换:(177605)s (1234567)8 转换:001,010,011,100,101,110,111 转换:(10100111001011011)2
◼ 二进制的压缩表示:八进制、十六进制 ◼ 二进制和八进制如何相互转换? ◼ 3位一组,直接转换 问题5 数据在程序中是如何表示的? (1111111110000101)2 分组:1,111,111,110,000,101 转换:(177605)8 (1234567)8 转换:001,010,011,100,101,110,111 转换:(1010011100101110111)2
问题5数据在程序中是如何表示的? 二进制和十六进制如何相互转换? ■4位一组,直接转换,用AF表示10-15 十进制 2 3 4 54 6 7 二进制00000001001000110100。01010110。011 十六进制0 7 十进制。8 10. 11. 13 14 15 二进制100010014101010114110041101+1110111l 十六进制8 9 A B C D E F (11111100101) 分组:1111,1111,1000,0101 转换:(FF85) (3A4E)16 转换:0011,1010,0100,1110 转换:(11101001001110)2
◼ 二进制和十六进制如何相互转换? ◼ 4位一组,直接转换,用A-F表示10-15 问题5 数据在程序中是如何表示的? (1111111110000101)2 分组:1111,1111,1000,0101 转换:(FF85)16 (3A4E)16 转换:0011,1010,0100,1110 转换:(11101001001110)2
常量 常量就是在程序使用之前预先设定并在整个 运行过程中没有变化的量。 C语言有两种实现常量的方法: 直接常量和符号常量
常量 常量就是在程序使用之前预先设定并在整个 运行过程中没有变化的量。 C语言有两种实现常量的方法: 直接常量和符号常量