Day04_数据类型占位符使用及进制转换
回顾:
1.变量
2.scanf标准函数
字符类型是一种数据类型
在C语言程序中字符类型用char表示
字符类型中包含了256个不同的字符,例如'a','+','~' ...
字符类型中的所有字符在计算机中都是使用数字表示的
ASCII码表描述了字符和数字之间的对应关系
'a' -- 97
'A' -- 65
'0' -- 48 (字符0,不是数字0)
256个字符分成两组,每组128个,其中一组包含所有常见字符,这些字符对应的整数位于0到127之间
这组字符和整数之间的对应关系在所有计算机上都一样
另外一组字符和整数之间的对应关系在不同的环境下是不同的;这组字符对应的数字范围是从 -1 到 -128 或者 128 到255
字符类型数字一般不要当整数使用
无符号字符类型和字符类型所包含的字符是一样的,但是他们所对应的整数范围是固定的(0到255)
无符号类型使用 unsigned char 来表示
ASCII码表中所有小写英文字母字符和大写英文字母字符以及阿拉伯数字字符都是连续的
't' - 'a' 等于 'T' - 'A'
'd' - 'a' 等于 '3' - '0'
'\n' 换行字符
'\r' 回车字符 (printf语句中会把\r之前内容覆盖掉)
'\t' 制表符
'\\' 代表\
'\'' 代表'
'\"' 代表"
短整数类型是一种数据类型
短整数类型用short表示
短整数类型一共包含65536个不同的整数数字
这些整数的范围是从 -32768 到 32767
无符号短整数类型也是一种数据类型
无符号短整数使用 unsigned short表示
无符号短整数同样包含65536个不同的整数,范围是0到65535
长整数也是一种数据类型
长整数用long int 或者long 表示
这个数据类型包含2的32次方个不同的整数
这些整数的范围是从 -2的31次方 到 2的31次方减一
无符号长整数类型也是一种数据类型
无符号长整数类型用unsigned long或者unsigned long int表示
无符号长整数的数字范围是从 0 开始 到 2的32次方减一 为止
整数类型在我们的计算机环境中和长整数类型一致
整数类型使用int表示
无符号整数类型用 unsigned int 表示
所有整数类型之间是互相重叠的
所能表示的数字范围逐级扩大
C语言中可以使用两种数据类型表示带小数点的数字
单精度浮点数类型用float表示
双精度浮点数类型用double表示
单精度浮点类型所能表示的精度范围低
程序中所有不带小数点的数字自动被当成int类型数字处理
如果希望在程序中使用无符号整数类型的数字则需要在数字后面加u,例如:3u;
程序中所有带小数点的数字自动被当成double类型数字处理
如果希望在程序中使用float类型的数字则需要在数字后加f,例如:2.3f
---------------------占位符列表-------------------------
char -- %c 或 %hhd
(%c打印字符身份,%hhd打印数字身份)
unsigned char -- %c 或 %hhu
short -- %hd
unsigned short -- %hu
long -- %ld
unsigned long -- %lu
int -- %d
unsigned int -- %u
float -- %f 或 %g
double -- %lf 或 %lg
(%g和%lg不会保留小数点后面无效的0,%f和%lf会保留)
%nd可以规定打印结果占n个位置,没有数字的位置用空格填充
%-nd同样可以规定打印结果所占的位置数量,负号表示有效内容靠左显示
%0nd同样可以规定打印结果所占的位置数量,0表示无效位置用0填充
%n.mf做占位符同样可以打印浮点数,其中n表示打印结果一共占多少位置,m表示小数点后面占多少位置
--------------------------------------------------------
计算机内存被划分成多个同样大小的格子,每个格子叫做一个字节
每个变量一定是多个连续字节存储的
计算机为每个字节分配了一个编号(地址),不同字节的编号一定不同
地址从0开始递增
变量的地址是存储它的那些字节中地址最小的字节的地址
所有数据或者变量所占据的字节数必须是2的整数次方;
sizeof关键字可以用来计算某个数据类型或者某个变量所占的空间字节数;
各种数据类型的大小
char(unsigned char) 1个字节
short(unsigned short) 2个字节
long(unsigned long) 4个字节
int(unsigned int) 4个字节
float 4个字节
double 8个字节
sizeof关键字的小括号中对变量所做的修改不会真正生效
--------------------------------------------------------
通常表示数字的方式叫做十进制
每个数位上有10种不同的状态
计算机中使用二进制表示数字
二进制中每个数位上只有两种不同的状态(分别使用0和1表示)
二进制和十进制都是一种表示数字的方式
任何数字既可以用十进制表示,也可以用二进制表示
二进制数字中每个数位都有编号,最右边的数位编号为0,向左依次递增
二进制数字中每个数位上的1相当于2的位数次方
二进制数字转换十进制时可以把每个数位上的1单独转换,然后把转换结果求和
0011 0101 = 32 + 16 + 4 + 1=53
十进制数字转换二进制
51= 32 + 16 + 2 + 1
0010 0000 32
0001 0000 16
0000 0010 2
0000 0001 1
0011 0011 51
---------------------练习-------------------------------
73 = 64 + 8 + 1
0100 1001
111 = 64 + 32 + 8 + 4 + 2 + 1
0110 1111
105 = 64 + 32 + 8 + 1
0110 1001
200= 128 + 64 + 8
1100 1000
234= 128 + 64 + 32 + 8 + 2
1110 1010
------------------十进制转换二进制----------------------
5 #include <stdio.h>
6
7 int main()
8 {
9 int num=0;
10 printf("请输入一个0~255的数字:");
11 scanf("%d",&num);
12 printf("%d",num / 128);
13 num=num % 128;
14 printf("%d",num / 64);
15 num=num % 64;
16 printf("%d",num / 32);
17 num=num % 32;
18 printf("%d ",num / 16);
19 num=num % 16;
20 printf("%d",num / 8);
21 num=num % 8;
22 printf("%d",num / 4);
23 num=num % 4;
24 printf("%d",num / 2);
25 num=num % 2;
26 printf("%d\n",num / 1);
27 num=num % 1;
28
29 }
--------------------------------------------------------
除以2取余倒着写
**** ***1 173
0*** ***0 86
00** ***1 43
000* ***1 21
0000 ***0 10
0000 0**1 5
0000 00*0 2
0000 0001 1
--------------------------------------------------------
通过上面的方法计算得出的二进制数字叫做原码
计算机中使用补码记录数字
所有非负数的原码和补码一样
内存中每个字节对应八个二进制位
八进制和十六进制是两种二进制的简化写法
1100 0110 = 11 000 110
= 306 八进制
C语言程序中可以直接使用八进制形式表示数字,必须在前边加一个0
%o 做占位符可以把数字的八进制表现形式打印在屏幕上
1100 0110 =C6 十六进制
十六进制中每个数位上用0到9以及a到f来表示
C语言程序中可以直接使用十六进制表示数字,必须在前边加上0x;
程序中直接使用十六进制方式表示的数字计算机自动把它当成无符号整数类型看待
%x或%X做占位符可以把数字的十六进制表现形式打印在屏幕上
--------------------------------------------------------
补充:
'\r' 回车字符
例:
printf("*******%d\r",1);
printf("******%d\r\n",2);
则输出结果为:
******21
也就是说 ‘\r’ 会在输出的时候把光标重新定位到第一位
也就是覆盖前面的内容;
例:
printf("123456789\r");
printf("000\r\n");
则输出结果为:
000456789
~!注意:\r必须与\n必须一起使用,否则输出为空
--------------------------------------------------------
预习:
1.负数的二进制补码计算
2.C语言中的操作符
作业:
1.编写程序按照除以2取余倒着写的方式计算用户给定数字的二进制并打印在屏幕上(规定输入数字范围0~255之间)
2.编程把用户给定的秒数转换成如下格式
hh : mm : ss
Day04_数据类型占位符使用及进制转换的更多相关文章
- JAVA基础学习之String、StringBuffer、StringBuilder、基本数据类型的使用、整形进制转换、集合Collection、Vector、ArrayList、LinkedList、HashSet、TreeSet等(3)
主函数类MainDemo.java package com.itcast.test20140109; import java.util.ArrayList; import java.util.Coll ...
- CodeForces 1B-字符串,进制转换与数学
一个萌新的成长之路 Background 同学们都回家了,只有我和wjh还有邢神在机房敲代码,吃random口味的方便面-- Description Translated by @PC_DOS fro ...
- Java进制转换, 数据类型, 运算符
1:进制转换 转换规则: 先把数据的每一位上的系数乘以对应基数的次幂(低位从零开始),然后相加即可 十进制到其他进制 规则:除基取余,直到商为0,最后将余数反转 十进制到二进制: 除2取余,直到商为0 ...
- python 数据类型、进制转换
数据类型 存储单位 最小单位是bit,表示二进制的0或1,一般写作b 最小的存储单位是字节,用byte表示,1B = 8b 1024B = 1KB 1024KB = 1MB 1024MB = 1GB ...
- python27期day03:字符串详解:整型、可变数据类型和不可变数据类型、进制转换、索引、切片、步长、字符串方法、进制转换、作业题。
1.%s: a = "我是新力,我喜欢:%s,我钟爱:%s"b = a%("开车","唱跳rap")print(b)2.整型: 整数在Pyt ...
- Java基础复习之一篇:关健字,标识符,注释,常量,进制转换,变量,数据类型,数据类型转换
1.关健字 1.1.被Java语言赋予特定意义的单词(如:class,interface,public ,static) 1.2.全部是小写 1.3.注意事项(goto和const作为关健字保留起来) ...
- 进制转换&数据类型(1)
一: 进制转换 在计算机中, 数据都是以0和1来表示的 进制: 进位制 十进制: 数字由0~9这10个数字来表示, 逢10进1位 0 1 2 3 4 5 6 7 8 9 10 二进制: 数字由0和1这 ...
- 大数据学习--day02(标识符、变量、数据类型、类型转换、进制转换、原码反码补码)
标识符.变量.数据类型.类型转换.进制转换.原码反码补码 标识符: java50个关键字不能做标识符,以数字开头不能做标识符(这个老是忘记写一个类名的时候) 变量: 变量分为成员变量和局部变量,注意作 ...
- 2 Java基础语法(keyword,标识符,凝视,常量,进制转换,变量,数据类型,数据类型转换)
1:keyword(掌握) (1)被Java语言赋予特定含义的单词 (2)特点: 所有小写. (3)注意事项: A:goto和const作为保留字存在. B:类似于Notepad++这种高级记事本会对 ...
随机推荐
- linux 中的进程wait()和waitpid函数,僵尸进程详解,以及利用这两个函数解决进程同步问题
转载自:http://blog.sina.com.cn/s/blog_7776b9d3010144f9.html 在UNIX 系统中,一个进程结束了,但是他的父进程没有等待(调用wait / wait ...
- eclipse安装使用教程
eclipse安装使用教程 很多人都知道要用eclipse来做java开发,但很多的新手朋友却不知道怎么下载和安装eclipse. 下面给你介绍一下怎么下载和安装eclipse来用于自己的学习或者项目 ...
- [转]ViewPager学习笔记(一)——懒加载
在项目中ViewPager和Fragment接口框架已经是处处可见,但是在使用中,我们肯定不希望用户在当前页面时就在前后页面的数据,加入数据量很大,而用户又不愿意左右滑动浏览,那么这时候ViewPag ...
- Entity Framework表拆分
一.概念 表拆分:一个表拆分成多个实体,例如Photograph表,可以拆分为Photograph和PhotographFullImage两张表. Photograph实体结构: using Syst ...
- DataGridView使用技巧五:自动设定列宽和行高
一.设定行高和列宽自动调整 设定包括Header和所有单元格的列宽自动调整 //设置包括Header和所有单元格的列宽自动调整 this.dgv_PropDemo.AutoSizeColumnsMod ...
- daterangepicker 使用方法总结
daterangepicker 是一个时间段选择插件.官网地址:http://www.daterangepicker.com/ 项目中需要实现如下图的效果: 1.引入该插件所需要的JS 和 CSS , ...
- [oracle] oracle-myibatis-整理
==================================== insert ========================================== 语句 <insert ...
- C/C++预处理指令
预处理指令 Preprocessor Directives define undef ifdef ifndef if endif else and elif line error include 预定 ...
- ADC相关参数之---分辨率和精度
ADC的分辨率被定义为输入信号值的最小变化,这个最小数值变化会改变数字输出值的一个数值.对于一个理想ADC来说,传递函数是一个步宽等于分辨率的阶梯.然而,在具有较高分辨率的系统中(≥16位),传输函数 ...
- 各个层次的gcc警告
http://blog.csdn.net/lizzywu/article/details/9419145 各个层次的gcc警告从上到下覆盖 变量(代码)级:指定某个变量警告 int a __attri ...