您的位置:首页 > 编程语言 > C语言/C++

【C语言】第五篇·进制转换

2015-08-17 08:08 393 查看
一、计算机中的进制

是一种计数方式,数值的表示形式

二、常见的进制
二进制、十进制、八进制、十六进制

三、进制的书写形式
二进制: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);}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: