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

来源:互联网 发布:恒生指数期货模拟软件 编辑:程序博客网 时间:2024/06/03 22:40
计算机中的进制
  是一种计数方式,数值的表示形式

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

三、进制的书写形式
   二进制: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; //八进制数12int xNum=0x88; //十六进制数23printf("八进制:%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);
} 




0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 马桶水箱盖子坏了怎么办 绿萝的叶子黄了怎么办 绿萝叶子烂了怎么办 还款协议签订后一方反悔怎么办 签了协议想反悔怎么办 体温计打碎了水银找不到了怎么办 模拟城市5核电站爆炸怎么办 日本地铁票丢了怎么办 在日本地铁票丢了怎么办 首付交了没合同怎么办 工程干完不给签合同怎么办 寄存密码纸丢了怎么办 超市柜子纸丢了怎么办 楼下有污水井味道怎么办 孕妇闻到了烧垃圾怎么办 楼下9米垃圾房怎么办 在工厂上班得了职业病怎么办 自来水被农药水污染了怎么办 雾霾天头疼恶心怎么办? 夫妻住宾馆一个没有身份证怎么办 医保报销后认定工伤怎么办 结肠癌术后复查有息肉怎么办 无蒂息肉恶变要怎么办 贤者时间很长怎么办 鸡吃了酒米醉了怎么办 自填脂肪乳房脂肪液化怎么办 中国人在外国遇到危险怎么办 dnf刷图卡住了怎么办 dbf深渊怪卡住了怎么办 dnf86级没任务了怎么办 dnf二觉任务没了怎么办 脚趾甲变空向上翘怎么办 汽油车加了一点柴油怎么办 柴油车辆环保检测功率不足怎么办 加95加错一次92怎么办 新车95加错92油怎么办 加不到95号汽油怎么办 去新疆没95号油怎么办 黄龙300加了92怎么办 gla错加92号油 怎么办 95和98混加了怎么办