c语言2816进制改十进制,C语言课件--数据类型、运算符与表达式.ppt

C语言程序设计 信息工程学院 施莹 * 第三章 数据类型 预备知识 数据类型 常量与变量 各类数值型数据间的混合运算 运算符和表达式 • 2.0 预备知识 –计算机中数的表示及进制转换 • 数码、基与权 –数码:表示数的符号 –基:数码的个数 –权:每一位所具有的值 • 数制 • 各种进制之间的转换(整数) – 二进制、八进制、十六进制转换成十进制 » 方法:按权相加 – 十进制转换成二进制、八进制、十六进制 » 原理: » 方法:连续除以基,从低到高记录余数,直至商为0 例 把十进制数59转换成二进制数 592 292 142 72 32 12 0 (59)10=(111011)2 1 1 0 1 1 1 1 1 1 0 1 1 余 余 余 余 余 余 例 把十进制数159转换成八进制数 1598 198 28 0 (159)10=(237)8 2 3 7 余 7 余 3 余 2 例 把十进制数459转换成十六进制数 45916 2816 116 0 (459)10=(1CB)16 1 C B 余11 余12 余 1 – 二进制与八进制之间的转换 » 二进制转换成八进制:从右向左,每3位一组(不足3位左 补0),转换成八进制 » 八进制转换成二进制:用3位二进制数代替每一位八进制数 例 (1101001)2=(001,101,001)2=(151)8 例 (246)8=(010,100,110)2=(10100110)2 000 ~ 0 001 ~ 1 010 ~ 2 011 ~ 3 100 ~ 4 101 ~ 5 110 ~ 6 111 ~ 7 – 字节和位 • 内存以字节为单元组成 • 每个字节有一个地址 • 一个字节一般由8个二进制位组成 • 每个二进位的值是0或1 01234567 0 1 2 3 4 5 6 7 8 9 10 ……. 例:int i , j; i=10;j=-10; 10i 数据存放示意图 0000000010000001i 数据在内存中实际存放情况 1111111101111110i取反 1111100111111111j 原码反码补码 +7000001110000011100000111 -7100001111111100011111001 +0000000000000000000000000 -0100000001111111100000000 数的范围 01111111~ 11111111 (-127~+127) 01111111~ 10000000 (-127~+127) 01111111~ 10000000 (-128~+127) (用一字节表示数) • 负数补码转换成十进制数:最高位不动,其余位取反加1 例 补码:11111001 取反:10000110 加1: 10000111=-7 C 数 据 类 型 基本类型 构造类型 指针类型 空类型void 定义类型typedef 字符类型char 枚举类型enum 整 型 实型 单精度型float 双精度型double 数组 结构体struct 共用体union 短整型short 长整型long 整型int 数据类型决定: 1. 数据占内存字节数 2. 数据取值范围 3. 其上可进行的操作 –基本数据类型 b _above $123 b » 一般用大写字母 » 是宏定义预处理命令,不是C语句 –直接常量: » 整型常量 » 实型常量 » 字符常量 » 字符串常量 如 #define PRICE 30 –常量 • 定义:程序运行时其值不能改变的量(即常数) • 分类: –符号常量:用标识符代表常量 » 定义格式: #define 符号常量 常量 没有字符串变量,用字符数组存放 例 /*ch3_003.c*/ #include #define PRICE 12.5 main() { int num=3; float total; char ch1,ch2=‘D’; total=num*PRICE; ch1=ch2-‘A’+‘a’; printf(“total=%f,ch1=%c\n”,total,ch1); } 宏定义 变量定义 输出结果 运行结果: total=37.50000, ch1=d • 3.3各类数值型数据间的混合运算 –隐式转换 • 什么情况下发生 –运算转换------不同类型数据混合运算时 –赋值转换------把一个值赋给与其类型不同的变量时 –输出转换------输出时转换成指定的输出格式 –函数调用转换------实参与形参类型不一致时转换 • 运算转换规则:不同类型数据运算时先自动转换 成同一类型 –显式转换(强制转换) • 一般形式:(类型名)(表达式) 例 (int)(x+y) (int)x+y (double)(3/2) (int)3.6 • 说明:强制转换得到所需类型的中间变量,原变 量类型不变 例#include main() { float x; int i; x=3.6; i=(int)x; printf(“x=%f,i=%d”,x,i); } 结果:x=3.600000,i=3 精度损失问题 较高类型向较低类型转换时可能发生 = !=) 逻辑运算符:((! k=++j; j=3; k=j++; j=3; printf(“%d”,++j); j=3; printf(“%d”,j++); a=3;b=5;c=(++a)*b; a=3;b=5;c=(a++)*b; * / % ---+ - (2) (3) (4) 例 -i++  -(i++) i=3; printf(“%d”,-i++); //-3 例 j+++k; (j++)+k; 例 -i++ i=3; printf(“%d”,-i++); –赋值运算符和表达式 • 简单赋值运算符 –符号: = –格式: 变量标识符=表达式 –作用:将一个数据(常量或表达式)赋给一个变量 • 复合赋值运算符 –种类:+= -= *= /= %= 《= 》= d=func(); c=d+2; • 说明: –结合方向:自右向左 – 优先级: 14 –左侧必须是变量,不能是常量或表达式 – 赋值表达式的值与变量值相等,且可嵌套 –赋值转换规则:使赋值号右边表达式值自动转换成其左边 变量的类型 例 3=x-2*y; a+b=3; 例 float f; int i; i=10; f=i; 则 f=10.00000 例 int i; i=2.56; //结果i=2; 例: a=b=c=5 a=(b=5) a=5+(c=6) a=(b=4)+(c=6) a=(b=10)/(c=2) //a=-264 等价于a=a+(a=a-(a*a)) //a=0 等价于a=a+(a=a*(a=a-(a=a*3))) –逗号运算符和表达式 • 形式:表达式1,表达式2,…… ,表达式n • 结合性:从左向右 • 优先级: 15 • 逗号表达式的值:等于表达式n的值 • 用途:常用于循环for语句中 例 a=3*5,a*4 a=3*5,a*4,a+5 例 x=(a=3,6*3) x=a=3,6*a 例 a=1;b=2;c=3; printf(“%d,%d,%d”,a,b,c); printf(“%d,%d,%d”,(a,b,c),b,c); 01 11 11 11 11 11 11 11int型:最大:32767 10 00 00 00 00 00 00 00最小:-32768 11 11 11 11 11 11 11 11unsigned int型:最大:65535 00 00 00 00 00 00 00 00最小:0 数制 基 权 表示 数码 特点 10º,10¹,10²,… 十进制数 0~9 10 逢十进一 二进制数 0~1 2 2º,2¹,2²,… 逢二进一 八进制数 0~7 8 8º,8¹,8²,… 逢八进一 十六进制数 0~9,A~F,a~f 16 16º,16¹,16²,… 逢十六进一 十进制:4956= 410³+910² +510¹+610º二进制:1011=12³+02² +12¹+12º十六进制:81AE=816³+116² +1016¹+1416º八进制:4275=48³+28² +78¹+58º

展开阅读全文

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值