C语言编程预备知识-进制和常量
什么是进制?
进制也就是进位计数制,是人为定义的带进位的计数方法
进位制计数法是一种记数方式,故亦称进位记数法计数法,可以用有限的数字符号代表所有的数值。可使用数字符号的数目称为基数或底数,基数为n,即可称n进位制,简称n进制。
现在最常用的是十进制,通常使用10个阿拉伯数字0-9进行记数
进制就是逢几进一
我们说N进制实际就是指逢N进一
我们生活中用到进制的例子:
一周七天————七进制
一年十二个月————十二进制
一小时六十分钟————六十进制
电脑中的数据————二进制
由于人类解剖学的特点,双手共有十根手指,故在人类自发采用的进位制中,十进制是使用最为普遍的一种。十进制编码几乎就是数值本身。
数值本身是一个数学上的抽象概念。经过长期的演化、融合、选择、淘汰,系统简便、功能全面的 十进制计数法成为人类文化中主流的计数方法,经过基础教育的训练,大多数的人从小就掌握了十进制计数方法。盘中放了十个苹果,通过数苹果我们抽象出来“十”这一数值,它在我们的脑海中就以“10”这一十进制编码的形式存放和显示,而不是其它的形式。从这一角度来说,十进制编码几乎就是数值本身。
十进制的基数为10,数码由0-9组成,计数规律逢十进一。
我们的计算机只能识别二进制,而人类最习惯使用的是十进制,为了实际需要我们又建立了八进制和十六进制。二进制有两个特点:它由两个数码0,1组成,二进制数运算规律是逢二进一。
为区别于其它进制,二进制数的书写通常在数的右下方注上基数2,或加后面加B表示,其中B是英文二进制Binary的首字母。
例如:二进制数10110011可以写成(10110011)2,或写成10110011B。对于十进制数可以不加标注,或加后缀D,其中D是英文十进制Decimal的首字母D。计算机领域我们之所以采用二进制进行计数,是因为二进制具有以下优点:
1) 二进制数中只有两个数码0和1,可用具有两个不同稳定状态的元器件来表示一位数码。例如,电路中某一通路的电流的有无,某一节点电压的高低,晶体管的导通和截止等。
2) 二进制数运算简单,大大简化了计算中运算部件的结构。
二进制数的加法和乘法基本运算法则和各进制间的书写,如下:
![1d6c50af7bb580dcab4aa3cc7da93991.png](https://i-blog.csdnimg.cn/blog_migrate/8e116eba367131b62c04a3d1cf01c62d.jpeg)
![50dfc5a555353675597c69fb88f6a6dc.png](https://i-blog.csdnimg.cn/blog_migrate/e8d9c2752d02cb7e880927df102488ee.jpeg)
3)二进制天然兼容逻辑运算。
但是,二进制计数在日常使用上有个不便之处,就是位数往往很长,读写不便,所以计算机领域我们实际采用的是十六进制。二进制数转换为十六进制数时,长度缩减为原先的约四分之一,十六进制的一个数位可代表二进制的四个数位。
什么是常量,常量在C语言中是怎么表示的
在计算机程序运行时,不会被程序修改的量;常量,在计算机技术方面虽然是为了硬件、软件、编程语言服务,但是它并不是专门为硬件、软件、编程语言而引入的概念。常量可区分为不同的类型,如:25、0、-8为整型常量,6.8、-7.89为实型常量,‘a’、‘b’为字符常量。常量一般从其字面形式即可判断。这种常量称为字面常量或直接常量。简单地说,就是在某一个程序运行时,其中某一个因素的数值值要认为固定起来的量。
在C语言中,整型常量分为十进制整型常量、八进制整型常量和十六进制整型常量三种表示形式。
1)、十进制整型常量
此种格式的整型常量只能出现 0~9 的数字,且可带正、负号。比如:
0 1 364 28 -34
2)、八进制整型常量
此种格式的整型常量以数字0开头的八进制数字串。其中数字为 0~7。
3)、十六进制整型常量
此种格式的整型常量以0x或0X(x是大写)开头的十六进制数字串。其中每个数字可以是 0~9、a~f或 A~F 中的数字或英文字母。
浮点数常量
浮点型常量的表示方法:
![3cc2f4961ea08679e77e1eb0b1976453.png](https://i-blog.csdnimg.cn/blog_migrate/f9306b01955df4918481ea31b27e852e.jpeg)
C语言中的浮点数就是平常所说的实数。 浮点数有两种表示形式:
1)、传统的写法。它由数字和小数点组成(注意必须有小数点)。
float x = 0.123;
2)、科学计数法。注意字母e(或E)之前必须有数字,且e后面的指数必须为整数,
float x = 3.2e3;
字符常量
所谓字符常量,就是用英文单引号括起来的一个字符。在使用字符常量时应该注意:
1)、单引号内的大小写字符代表不同的字符常量,例如‘Y’、‘y’是两个不同的字符常量。单引号内如果是一个空格符,也是一个字符常量。
2)、字符常量只能用英文单引号括起来,不能用双引号。例如“Y”不是一个字符常量,而是一个字符串。
单引号括起来的字符包括英文字母大、小写字符各26个、数字字符10个,以及空白符(空格符、制表符、换行符),标点和特殊符号(键盘上的共30个),它们也称为C语言的基本字符集。
常量是以什么样的二进制代码存储在计算机中
在计算机中不管是什么数据都是以二进制数据的形式储存的,因为计算机只认识“0”,“1”。只不过不同类型的数据存储在计算机中时转化为二进制的规则不一样,这个问题实际上就是编码的问题。比如说:int i = 86;该语句的意思是将 86 转换为 二进制数据存进去,那么它到底是以什么方式的二进制代码放进去的呢?整数是以补码的形式转化为二进制代码存储在计算机中的,什么是补码?字符的存储方式本质上与整数存储方式相同。比如字符’A’,它是先通过ASCII码转化为一个十进制整数,然后就同十进制整数一样,再将整数转化为二进制代码。
补码很简单,但是很重要,补码的两个核心:
1)正整数的补码与原码相同
2)负整数补码的求法:先将该负数的绝对值的二进制数求出来,然后将所有位取反,末尾加 1,不够位数时左边补 1 ,比如 -3 绝对值是 3 ,int 型 占32位,所以int 型 3 的二进制代码为
0000 0000 0000 0000 0000 0000 0000 0000 0011
然后所有位取反
1111 1111 1111 1111 1111 1111 1111 1111 1100
最后末尾加 1 就是
1111 1111 1111 1111 1111 1111 1111 1111 1101