【C语言】第五篇·进制转换
2015-08-17 08:08
393 查看
一、计算机中的进制
是一种计数方式,数值的表示形式
二、常见的进制
二进制、十进制、八进制、十六进制
三、进制的书写形式
二进制:0b/0B+数值
十进制:数值
八进制:0+数值
十六进制:0x+数值
四、进制转换
1.进制转换三要素:数码、基数、数位
数码:某一进制中某一位的值
数位:数为是指数码在一个数中的位数。注意:位数从0开始计数
基数:每个数位上所能使用的数码的个数。即:进制数。例如:二进制基数为2,十六进制基数为16
2.三要数之间的关系:
数码值*基数^位数
3.进制转换
![](http://img.blog.csdn.net/20150817084853452)
五、机器数和真值
机器数:一个数在计算机中的二进制表示形式,叫做这个数的机器数。机器数是带符号的,在计算机中一个机器数的最高位存放符号位,正数为0,负数为1。
例如:-3的机器数为:1000 0011 +3的机器数为:0000 0011
真值:因为第一位是符号位,所以机器数的形式值(将机器数直接转换成十进制数,此时不区分符号位)不等于真正的数值。为了区别起见,机器数对应的真正数值称为机器数的真值。
例如:-3的机器数为:1000 0011 ,10000011转换为十进制为:131(形式值),所以-3叫做其机器数的真值
六、源码、反码、补码
1.对于一个数,计算机要使用一定的编码方式进行存储。源码、反码以及补码是机器存储一个数的具体编码方式。
2. 数据在计算机中的存储方式
1)数据在计算机内部使用补码的形式,进行存储。
2)数据分为:有符号数和无符号数。无符号数全为正数。
3)求补码的方式
无符号数:即正数。正数:源码 == 反码 == 补码 。
有符号数:即有正负之分的数。正数上面的算法。负数:反码 = 除符号位的各位取反。 补码 =反码+1
4)在各种码之间转换的过程中,注意:0没有正负之分。
3. 为什么要引入反码、补码:
主要是为了优化减法运算。加法为计算机基础运算,在进行减法运算时,需要让计算机识别符号位,并且要设计相关的复杂电路,为了方便,引入反码和补码,通过加法实现减法运算。
七、示例程序
1.进制转换
2.十进制输出一个二进制(倒序)
3.判断奇偶性
4.通过异或运算交换两数的值
是一种计数方式,数值的表示形式
二、常见的进制
二进制、十进制、八进制、十六进制
三、进制的书写形式
二进制:0b/0B+数值
十进制:数值
八进制:0+数值
十六进制:0x+数值
四、进制转换
1.进制转换三要素:数码、基数、数位
数码:某一进制中某一位的值
数位:数为是指数码在一个数中的位数。注意:位数从0开始计数
基数:每个数位上所能使用的数码的个数。即:进制数。例如:二进制基数为2,十六进制基数为16
2.三要数之间的关系:
数码值*基数^位数
3.进制转换
五、机器数和真值
机器数:一个数在计算机中的二进制表示形式,叫做这个数的机器数。机器数是带符号的,在计算机中一个机器数的最高位存放符号位,正数为0,负数为1。
例如:-3的机器数为:1000 0011 +3的机器数为:0000 0011
真值:因为第一位是符号位,所以机器数的形式值(将机器数直接转换成十进制数,此时不区分符号位)不等于真正的数值。为了区别起见,机器数对应的真正数值称为机器数的真值。
例如:-3的机器数为:1000 0011 ,10000011转换为十进制为:131(形式值),所以-3叫做其机器数的真值
六、源码、反码、补码
1.对于一个数,计算机要使用一定的编码方式进行存储。源码、反码以及补码是机器存储一个数的具体编码方式。
2. 数据在计算机中的存储方式
1)数据在计算机内部使用补码的形式,进行存储。
2)数据分为:有符号数和无符号数。无符号数全为正数。
3)求补码的方式
无符号数:即正数。正数:源码 == 反码 == 补码 。
有符号数:即有正负之分的数。正数上面的算法。负数:反码 = 除符号位的各位取反。 补码 =反码+1
4)在各种码之间转换的过程中,注意:0没有正负之分。
3. 为什么要引入反码、补码:
主要是为了优化减法运算。加法为计算机基础运算,在进行减法运算时,需要让计算机识别符号位,并且要设计相关的复杂电路,为了方便,引入反码和补码,通过加法实现减法运算。
七、示例程序
1.进制转换
/* 计算机总常见的进制:二进制,八进制,十进制,十六进制 二进制:0b00001111 八进制:034 十六进制:0x34A */ #include <stdio.h> void main(){ int oNum=014; //八进制数12 int xNum=0x88; //十六进制数23 printf("八进制:%o --->十进制:%d\n",oNum,oNum); printf("十六:%x ---->十进制:%d\n",xNum,xNum); }
2.十进制输出一个二进制(倒序)
/ * 位运算的复合使用 先进行与1进行与运算,然后右移一位,接着与1进行与运算 原理:int 数为32位的二进制数,某一位右移该位位数位后,与&1后输出 * / #include <stdio.h> void changeToB(int x){ int i; int temp; for(i=0;i<32;i++){ temp=x; temp=temp >> i; printf("%d",temp&1); } printf("\n"); } void main(){ int num; void changeToB(int x); printf("输入一个需要转换为二进制的数:"); scanf("%d",&num); changeToB(num); }
3.判断奇偶性
/ * 利用与位运算进行判断奇偶性 奇数:二进制最后一位为1 偶数:二进制最后一位为0 * / #include <stdio.h> void fun(int x){ if(x&1){ printf("%d为奇数\n\n",x); } else printf("%d为偶数\n\n",x); } void main(){ void fun(int); int x; while(1){ printf("输入一个数:"); scanf("%d",&x); fun(x); } }
4.通过异或运算交换两数的值
/ * 计算机总常见的进制:二进制,八进制,十进制,十六进制 二进制:0b00001111 八进制:034 十六进制:0x34A* /#include < stdio.h>void main(){ int oNum=014; //八进制数12 int xNum=0x88; //十六进制数23 printf("八进制:%o --->十进制:%d\n",oNum,oNum); printf("十六:%x ---->十进制:%d\n",xNum,xNum);}
相关文章推荐
- 【C语言】第六篇·数组
- 【C语言】第七篇·指针
- 【C语言】第八篇·内存管理和结构体
- 【C语言】第九篇·枚举、定义类型和宏定义
- 【C语言】第十篇·文件操作
- C语言通讯录
- 【OC语言】第二篇·对象的作用、字符串类型以及多文件开发
- 【OC语言】第三篇·类方法的使用、匿名类以及封装
- 【OC语言】第四篇·类的继承、多态、类对象以及SEL类型
- 【OC语言】第五篇·@property和@synthesize关键字、动态类型检测和构造方法
- 【OC语言】第六篇·内存管理
- 【OC语言】第七篇·ARC和分类
- 【OC语言】第八天·block和Protocol
- 【OC语言】第九篇·NSString,NSArry,NSDictionary
- 【OC语言】第十篇·NSFileManager、NSDate、沙盒、copy以及单例模式
- 【C语言】第一篇·C语言概述和数据类型
- 【C语言】第二篇·输入输出和运算符
- C语言中的字符串
- C语言各种关键字
- C++容器vector的调用