标签:signed 浮点 转义字符 引号 打印 系统 个数 3.1 数据表示
二进制数据是用0和1两个数码来表示的数。它的基数是2,进位规则是“逢二进1”,借位规则是“借一当二”。当前的计算机系统使用的基本上是二进制系统。
二进制没有2只有0和1,逢2进1,其权的大小顺序为22、21、2o。例如:
二进制数据0001代表十进制的1,二进制数据0010代表十进制的2,
二进制数据0011代表十进制的3,二进制数据0100代表十进制的4,
二进制数据0101代表十进制的5,二进制数据0110代表十进制的6,
二进制数据1000代表十进制的8,二进制数据1001代表十进制的9,
二进制数据1010代表十进制的10,二进制数据1011代表十进制的11,
二进制数据1101代表十进制的13,二进制数据1111代表十进制的15。
在一个二进制数字的尾部每次多加一个0代表这个数字乘以2,就如同十进制的尾部每次多加一个0代表乘以10。例如:
二进制数据0001代表十进制的1,二进制数据0010代表十进制的2,
二进制数据0100代表十进制的4,二进制数据1000代表十进制的8,
2的常见倍数:1 2 4 8 16 32 64 128 256 512 1024 2048 4096
英文名称:hexadecimal ,是计算机中数据的一种表示方法。同我们日常中的十进制表示法不一样。它由0-9,A-F组成,字母不区分大小写。
与10进制的对应关系是:0-9对应0-9;A-F对应10-15;N进制的数可以用0---(N-1)的数表示超过9的用字母A-F。二进制只有0和1没有2,十进制只有0-9的数字没有10,十六进制只有0-F,也就是0到15的数字没有16。
在一个十六进制数字的尾部每次多加一个0代表这个数字乘以16,就如同十进制的尾部每次多加一个0代表乘以10。例如:
十进制的32表示成十六进制就是:20
十六进制的20代表十进制的:2×161+0×16o=32
十六进制的A5代表十进制的:10×161+5=165
十六进制的100代表十进制的:16×16=256
十六进制的23F代表十进制的:2×16×16+3×16+15=575
10进制转2进制:让个位对2取余数得出是1还是0,对其他位除以对应的2的倍数
C语言的常量包括:整数常量、浮点数常量、字符常量和字符串常量。
注意:0开头的常量看上去好像是十进制,其实不是了,已经是八进制了,八进制中只有0-7之间的数字,8和9都错误代码。
注意:C语言并没有提供二进制常量表达式。
浮点数常量,通俗地说就是带小数点的数字,表达式的中必须含有小数点,即使小数部分是0也要缺省带小数点。
主要有两种表达式:
一般认为双精度浮点数比单精度浮点数表达的范围要大很多,包括整数部分和小数部分,双精度表达的数字长度要大很多。
字符常量是用单引号将一个字符括起来的构成,每种被括起来不同的字符代表一个不同的数字(就如同每个学生有不同的名字,而且还有个不同的学号一样)。
所有字符与数值的对照表就是ASCII编码表,作为字符常量使用的ASCII编码主要是使用0-127范围内的数字。其中0~31及127(共33个)是控制字符或通信专用字符,其余为可显示字符。
例如:char c = ‘A’;
‘A’代表的是一个数字65,因为在ASCII编码表中A的数值是65,依此类推:
‘ B’代表66,‘a’代表97,
‘X’代表88,‘5’代表53,
‘=’代表61,‘|’代表124,
’ ’空格代表32等等。
因此,字符常量实际上也是一种整数常量,只不过字符常量所表达的范围比较小而已。
所有的ASCII码都可以用“\”加数字(2位的16进制数字或3位的8进制数字)来表示。
在C语言中常用些字母前加“\”,来表示常见的那些不能显示的ASCII字符,这样的字符就叫做转义字符。例如:char c = ‘\n’;其中‘\n’代表10,被打印输出时代表换行“new line”。依此类推:‘t’代表9,被打印输出时代表间隔一个TAB距离“Table”。
‘\0’代表0,打印输出时代表字符串结尾。
‘\\’代表92,打印输出时是一条反斜杠。
注意在C语言中要打印一条反斜杠,在字符常量中必须使用‘\\’来表示。
‘\”’代表34,打印输出时代表是一个双引号。
char c=‘\x25’; 代表37打印输出的是% ,Char c=‘\053’; 代表43打印输出的是+。
字符串常量是一对双引号括起来的字符集合。
例如,下面的是合法的字符串常量:"how do you do.","CHINA","a","$123.45",
存储:字符串中的字符依次存储在内存中一块连续的区域内,并且把空字符‘ \0’自动附加到字符串的尾部作为字符串的结束标志。故字符个数为n的字符串在内存中应占(n+1)个字节。
使用printf可以输出字符串,例如:printf("how do you do.");
与字符常量的比较:
计算机中将字节(Byte)作为计量存储容量和传输容量的一种计量单位,一个字节等于8位二进制数。在内存中个位的空间可以存储的数值只有0和1两种,两个位可以存储的数值可能是00、01、10和11。这四个数值分别代表的就是0、1、2、3。依此类推,如果有4个位的空间可以存储的数字就是:0-15(0x0到0xF)。
由此可见,内存空间上N个位可以存储的数值就是2的N次方个。
一个字节代表8个位的内存空间,可以存储的数值就是2的8次方个,即0到255之间的数值,十六进制表达是0x00到0xFF之间的数值
C语言变量,是指一段用于存取数据的内存空间。
从上表看出4个位表达的刚好是十六进制数字的个位数,如果再加4个位8位刚好表达的就是十六进制的两位数。因此计算机以8个位代表一个字节,表达的数字是(0-255)0x00到0xFF之间的数字总共256个,就像十进制中的两位数是0到99总共100个那样。
单字节变量(8位): unsigned char和char
unsigned char:无符号单字节变量,存储范围是0-255(0xFF)。
char:有符号单字节变量,存储范围是-128到0到127之间的数。
为了让char类型存储的256种数字中,一半是正数一半是负数,计算机将char类型变量中的最高位作为符号位。最高位为0的是正数,最高位为1是负数。
在负数区间,将unsigned char的数值减去256就是char类型。
unsigned short:无符号双字节变量,存储的范围是0-65535(0xFFFF) 总共65536个,就像十进制中的4位数是0到9999总共10000个那样
short :有符号双字节变量,存储范围是-32768到0到32767。
为了让short类型存储的65536种数字中,一半是正数一半是负数,计算机将short类型变量中的最高位作为符号位。最高位为0的代表正数,最高位为1代表负数。
在负数区间,将unsigned short的数值减去65536就是short类型的数值。
unsigned int:无符号四字节变量,存储的范围是0-4294967295(0xFFFFFFFF) 总共4294967296个,就像十进制中的8位数是0到99999999总共100000000个那样
int:有符号四字节变量,存储范围是-2147483648到0到2147483647。
在计算机中:1K=1024,1M=1024K,1G=1024M。
65536刚好被1024整除等于64,因此65536也称为64K,32768称为32K; 4294967296刚好被3个1024整除,因此也称为4G,2147483648称为2G。
为了让int类型存储的4G种数字中,一半是正数一半是负数,计算机将int类型变量中的最高位作为符号位。最高位为0的代表正数,最高位为1代表负数。
在负数区间,将unsigned int的数值减去4G就是int类型的数值。
指针变量:在32位操作系统中也是32位的,存储范围是0-0xFFFFFFFF之间。
浮点数类型:浮点数变量的存储结构与整型变量的存储结构完全不同。
float类型小数部分最多可以精确到6到7位,整数位数增长会占用小数部分。
double 类型的小数部分至少要能精确到小数点后 10 位以上,整数位数增长会影响到小数部分的精确度。
标签:signed 浮点 转义字符 引号 打印 系统 个数 3.1 数据表示
原文地址:http://www.cnblogs.com/kele-dad/p/7704351.html