- 进制说明
- 常用进制
- 二进制
- 三进制
- 四进制
- 十进制
- 计算机中的进制
- 1. 二进制
- 八进制
- 十六进制
- 进制转换
- 1. X进制转换为十进制
- 2. 十进制转换为X进制
- ASCII码的定义
- ASCII码的表示方式
- ASCII码的输出
- 数字的方式输出
- ASCII码的运算
常用进制 二进制
- 进制就是进位计数制的简称,是人为定义的带进位的计数方法.
- 对于任何的一种进制, X进制,表示每一个数位上的数运算时都是逢X进一位
- 例如: 10进制是缝10进一位,十六进制是逢十六进一,二进制就是逢二进一,理论上来说没有1进制,如果是1进制,逢1就进1,那么就拿1来说,就会进入到无限循环当中.
三进制逢2进1
四进制逢3进1
十进制逢4进1
计算机中的进制 1. 二进制逢10进1,我们日常中使用的进制
C语言中,如果我们想要表示一个二进制数,可以用0b作为前缀,然后跟上0和1组成的数字.
#includeint main(void) { int a = 0b101; // 声明一个二进制数 printf("%dn",a); return 0; }
结果:
八进制的数据在C语言里面前面是有一个0来表示,然后后面跟上0-7的数字.
C语言中%d,对应的是输出10进制数
#includeint main(void) { int a = 0123; // 1 * 8^2 + 2 * 8^1 + 3 * 8^0 printf("%dn",a); return 0; }
结果:
十六进制表示方式为:0x后者0X作为前缀,跟上0-9,a-f,A-F数字,a-f或者A-F表示10-15这六个数
#includeint main() { int a = 0x123; // a = 1 * 16^2 + 2 * 16^1 + 3 * 16^0 printf("%dn", a); return 0; }
结果:
2. 十进制转换为X进制
- 对于数字部分从右往左编号为0到n,第i个数字位表示为di,这个数字就是dn…d1d0
- 每一个数字都有一个权值
- 第i个数字位的权值为x^i
- 结果就是 sum(di*x^i)
ASCII码的定义
- 进制就是进制的幂次方*权重然后求和.
- 一个数移动有x^0这部分,也就是最右边的数.这个数可以通过除以X的余数得到.
- 比如最右边的x^0,部分的求法,就是用 num 除以 2,然后余数是多少,比如10来表示二进制
10 / 2 余数是0,就表示最后一位是0,然后得到的结果是5,5 再对2取余,结果是1,放到倒数第二位,
整除的部分是2,2再对2取余结果是0,整除的部分是1. 所以10的二进制的结果就是 1010 2^3 + 2 ^1
ASCII码的表示方式
- 它是一套编码系统
- 由于计算机用高电平和低电平分别表示1和0,所以再计算机中所有的数据的存储方式都是二进制数表示,例如,想a-z,A-Z这样的52个字母以及0-9的数字还有一些常用的符号等.在计算集中存储的时候也要使用二进制数来表示,具体用哪些二进制数字表示哪个字符,每个人都可以约定自己的一套规则,这就叫编码
- 即 一个数字 和 一个字符的 一一映射
- 为了通信而不造成混淆,所以需要所有人都使用相同的规则
- ASCII码使用指定的7位或者8位二进制数组合来表示128或者256种可能的字符
- 标准的ASCII码,使用7位二进制数(剩下的1位二进制为0)来表示所有的大写和小写字母,数字0到9,标点符号,以及在英文中使用的特殊控制字符
- 简单的来说就是一个数字对应一个字符
| 编码范围 | 表示 |
|---|---|
| [0,31], 127 | 0~31和127(共33个)是控制字符或者通信专用字符,常见的控制符: LF(换行),CR(回车),DEL(删除),BS(退格)等等,通信专用字符:SOH(文头),ACK(确认)等等 |
| [48,57]] | 数字0到9 |
| [65,90] | 大写字母A到Z |
| [97,122] | 小写字母a到z |
| 其他 | 空格,!,",#,+,-,%等标点符号或者运算符 |
ASCII码对应的字符用单引号括起来,并且是可以按照两种方式来输出的,分别为: 字符形式和整数形式
字符
#includeint main() { printf("%cn", '0'); printf("%cn", 'A'); printf("%cn", 'a'); printf("%cn", '$'); return 0; }
结果:
#includeint main() { printf("%dn",'A'); printf("%dn",'0'); printf("%dn",'a'); printf("%dn",'%'); return 0; }
结果:
- ASCII码可以当成整数和数字进行运算
- ASCII码可以进行比较,但是比较是按照ASCII码的整数值的大小来进行比较的.
#includeint main() { char a = 'a'; char b = 'A'; char c; c = a + 1; printf("%d,%dn",a,b); printf("%dn",a > b); // 所以C语言中ASCII码对比的是ASCII码的整数值,所以'a' > 'A' printf("%cn",c); return 0; }
结果:



