常见进制转换

常见进制转换

一. 进制概述

进制也就是进位计数制,是人为定义的带进位的计数方法(有不带进位的计数方法,比如原始的结绳计数法,唱票时常用的“正”字计数法,以及类似的tally mark计数)。 对于任何一种进制——X进制,就表示每一位置上的数运算时都是逢X进一位。 十进制是逢十进一,十六进制是逢十六进一,二进制就是逢二进一,以此类推,x进制就是逢x进位。

1.二进制

二进制有两个特点:它由两个数码0,1组成,二进制数运算规律是逢二进一,借位规则是“借一当二”。
例如:1+1=10B,10-1=1B

2. 八进制

八进制的基数R=8=2^3,有数码0、1、2、3、4、5、6、7,并且每个数码正好对应三位二进制数,所以八进制能很好地反映二进制。八进制用下标8或数据后面加O表示 例如:二进制数据 ( 11 101 010 . 010 110 100 )2 对应八进制数据 (352.264)8或352.264O。

3.十进制

十进制的基数为10,数码由0-9组成,计数规律逢十进一。

4.十六进制

十六进制数有两个基本特点:它由十六个数码:数字0~9加上字母A-F组成(它们分别表示十进制数10~15),十六进制数运算规律是逢十六进一,即基数R=16=2^4,通常在表示时用尾部标志H或下标16以示区别。
例如:十六进制数4AC8可写成(4AC8)16,或写成4AC8H。

二. 进制转换

1.十进制整数转二进制整数

十进制整数转换成二进制的方法之一——取余法
在这里插入图片描述
因为余数要逆序排列,所以45D = 10 1101B
代码如下:

#include<bits/stdc++.h>
using namespace std;
char B[20]; // 保存二进制
int main() {
   
   int D; // 十进制
   cin >> D;
   for(int i = 0; ; i++) {
   
   	B[i] = D%2+'0';   // 取D的余数加上'0',将余数转换成ASCLL码 
   	D /= 2;   // D整数2 
   	if(D==0)
   		break;
   }
   for(int i = strlen(B)-1; i >= 0; i--)  // 因为所得到的余数要逆着写 
   	cout << B[i];    	//所以B[i]逆着输出
   cout << endl;
   return 0;
}

2.二进制整数转换十进制整数

把二进制数首先写成加权系数展开式,然后按十进制加法规则求和。这种做法称为"按权相加"法。
2的0次方是1(任何数的0次方都是1,0的0次方无意义)
2的1次方是2
2的2次方是4
2的3次方是8
2的4次方是16
2的5次方是32
2的6次方是64
2的7次方是128
等等
例如:
100011B=32+0+0+0+2+1=35D
代码如下:

#include<bits/stdc++.h>
using namespace std;
char B[20]; // 保存二进制
int main(){
   
   cin >> B;  // 输入二进制数列 
   int len = st
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值