1. 如何快速的计算出计算机的几个进制
用竖式表示:
1507换算成十进制。
第0位 7 * 80 = 7
第1位 0 * 81 = 0
第2位 5 * 82 = 320
第3位 1 * 83 = 512 +
839
同样,我们也可以用横式直接计算:
7 * 80 + 0 * 81 + 5 * 82 + 1 * 83 = 839
结果是,八进制数 1507 转换成十进制数为 839
6.2.3 八进制数的表达方法
C,C++语言中,如何表达一个八进制数呢?如果这个数是 876,我们可以断定它不是八进制数,因为八进制数中不可能出7以上的阿拉伯数字。但如果这个数是123、是567,或12345670,那么它是八进制数还是10进制数,都有可能。
所以,C,C++规定,一个数如果要指明它采用八进制,必须在它前面加上一个0,如:123是十进制,但0123则表示采用八进制。这就是八进制数在C、C++中的表达方法。
由于C和C++都没有提供二进制数的表达方法,所以,这里所学的八进制是我们学习的,CtC++语言的数值表达的第二种进制法。
现在,对于同样一个数,比如是100,我们在代码中可以用平常的10进制表达,例如在变量初始化时:
int a = 100;
我们也可以这样写:
int a = 0144; //0144是八进制的100;一个10进制数如何转成8进制,我们后面会学到。
千万记住,用八进制表达时,你不能少了最前的那个0。否则计算机会通通当成10进制。不过,有一个地方使用八进制数时,却不能使用加0,那就是我们前面学的用于表达字符的“转义符”表达法。
6.2.4 八进制数在转义符中的使用
我们学过用一个转义符'\'加上一个特殊字母来表示某个字符的方法,如:'\n'表示换行(line),而'\t'表示Tab字符,'\''则表示单引号。今天我们又学习了一种使用转义符的方法:转义符'\'后面接一个八进制数,用于表示ASCII码等于该值的字符。
比如,查一下第5章中的ASCII码表,我们找到问号字符(?)的ASCII值是63,那么我们可以把它转换为八进值:77,然后用 '\77'来表示'?'。由于是八进制,所以本应写成 '\077',但因为C,C++规定不允许使用斜杠加10进制数来表示字符,所以这里的0可以不写。
事实上我们很少在实际编程中非要用转义符加八进制数来表示一个字符,所以,6.2.4小节的内容,大家仅仅了解就行。
6.2.5 十六进制数转换成十进制数
2进制,用两个阿拉伯数字:0、1;
8进制,用八个阿拉伯数字:0、1、2、3、4、5、6、7;
10进制,用十个阿拉伯数字:0到9;
16进制,用十六个阿拉伯数字……等等,阿拉伯人或说是印度人,只发明了10个数字啊?
16进制就是逢16进1,但我们只有0~9这十个数字,所以我们用A,B,C,D,E,F这五个字母来分别表示10,11,12,13,14,15。字母不区分大小写。
十六进制数的第0位的权值为16的0次方,第1位的权值为16的1次方,第2位的权值为16的2次方……
所以,在第N(N从0开始)位上,如果是是数 X (X 大于等于0,并且X小于等于 15,即:F)表示的大小为 X * 16的N次方。
假设有一个十六进数 2AF5, 那么如何换算成10进制呢?
用竖式计算:
2AF5换算成10进制:
第0位: 5 * 160 = 5
第1位: F * 161 = 240
第2位: A * 162 = 2560
第3位: 2 * 163 = 8192 +
10997
直接计算就是:
5 * 160 + F * 161 + A * 162 + 2 * 163 = 10997
(别忘了,在上面的计算中,A表示10,而F表示15)
现在可以看出,所有进制换算成10进制,关键在于各自的权值不同。
假设有人问你,十进数 1234 为什么是 一千二百三十四?你尽可以给他这么一个算式:
1234 = 1 * 103 + 2 * 102 + 3 * 101 + 4 * 100
2. 十进制转二进制快速算法
首先讲一下“权重”的概念,数字中某位的权重:2的(该位所在的位数(从右至左)-1)次方,比如:100的权重为:2^(1-1)=1 1的权重为:2^(2-1)=2,二进制转十进制:数字中所有位*本位的权重然后求和。
比如将10101转化为十进制:10101=1*2^4+0*2^3+1*2^2+0*2^1+1*2^0=21
十进制如何转二进制:将该数字不断除以2直到商为零,然后将余数由下至上依次写出,即可得到该数字的二进制表示,以将数字21转化为二进制为例。
拓展资料:
十进制数转换为二进制数时,由于整数和小数的转换方法不同,所以先将十进制数的整数部分和小数部分分别转换后,再加以合并。
而由二进制数转换成十进制数是把二进制数首先写成加权系数展开式,然后按十进制加法规则求和,这种做法称为“按权相加”法。
3. 2进制8进制10进制16进制各个之间如何进行换算
一、二进制与十进制之间的转换:
1、十进制转二进制,方法为:十进制数除2取余法,即十进制数除2,余数为权位上的数,得到的商值继续除2,依此步骤继续向下运算直到商为0为止。
4. 进制怎么算
计算机的进制计算方法
二进制转十进制方法:“按权展开求和”
例: (1011.01)2 =(1×2^3+0×2^2+1×2^1+1×2^0+0×2^(-1)+1×2^(-2) )10 =(8+0+2+1+0+0.25)10 =(11.25)10 (2)十进制转二进制 · 十进制整数转二进制数:“除以2取余,逆序排列”。
(4)快速进制计算方法扩展阅读:
对于任何一个数,我们可以用不同的进位制来表示。比如:十进数57(10),可以用二进制表示为111001(2),也可以用五进制表示为212(5),也可以用八进制表示为71(8)、用十六进制表示为39(16),它们所代表的数值都是一样的。
5. 进制转换算法是怎么算
很简单的,给你看两个例子你就明白了。
十进制转二进制:用2辗转相除取余至到结果为1,将余数和最后的1从下向上倒序写就是结果
例如 :302 转换成二进制
302/2 = 151余0
151/2 = 75余1
75/2 = 37余1
37/2 = 18余1
18/2 = 9余0
9/2 = 4余1
4/2 = 2余0
2/2 = 1余0
所以,二进制就是100101110
二进制转十进制:从最后一位开始算,依次列为第0、1、2...n 位,第n位数(0或1)分别乘以2的n次方,最后相加就是结果
例如:01101011 转十进制:
第0位:1乘2的0次方=1
第1位:1乘2的1次方=2
第2位:0乘2的2次方=0
第3位:1乘2的3次方=8
第4位:0乘2的4次方=0
第5位:1乘2的5次方=32
第6位:1乘2的6次方=64
第7位:0乘2的7次方=0
然后:1+2+0+8+0+32+64+0=107.所以,十进制就是107
6. 关于2进制到10进制的快速口算法
可以用减法,比如
11111100
你就算100000000=2^8=256
然后11111100等于256-4=252.
十六进制到十进制也这么算吧。感觉。
如果是数比较小,可以用加法。
7. 十进制转换二进制怎么快速计算
用凑数的方法. 简单来说需要记忆的就是无论什么进制,个位都是表示几个1, 也就是个位上的基数是1.
举例说明: 10D=?B
写出二进制每位上的基数, 个位=1,高位=低位*2, 乘以2是因为要转换成二进制, 写到比10大为止
168421用这组数从大到小顺序将10凑出来,用到的数下面写1,没用到的写0
0101010包含1个8和1个2
因此10D=1010B
n进制基数: 个位1,高位=低位*n
8. 十六进制转二进制,有什么比较快的运算方法吗
非十进制转换为十进制:1.数值按权展开:规律如下(比较简单):136.1=1*10E2+3*10E1+6*10E0+1*10E-1101.01B=1*2E2+0*2E1+1*2E0+0*2E-1 +1*2E-22cH=2*16E1+c*16E0=44//B表示2进制,H表示16进制 //E科学记数 即次方后接次方数 16E1 就是 16的1次方 十进制转换为二进制1除二取余(整数部分),乘二取整(小数部分)除二取余:把十进制整数除以2得到商和余数,在将所得到的商除以2,又得到新的商和余数,这样不断的用二去除商,直到商为0为止.每次除的的余数便是相应的二进制数码.最先得到的是最的有效位,最后得到的是最高有效位.如:11的二进制11/2=5--15/2=2--12/2=1--01/2=0--1//是整除,即二进制位 1011(从后面开始往上读,高位低位的问题)乘二取整:对十进制小数乘2得到的整数部分和小数部分,整数部分既是相应的二进制数码,再用2乘小数部分(之前乘后得到新的小数部分),又得到整数和小数部分.如此不断重复,直到小数部分为0或达到精度要求为止.第一次所得到为最高位,最后一次得到为最低位如:0.25的二进制0.25*2=0.50.5*2=1即0.25的二进制为 0.01 ( 第一次所得到为最高位,最后一次得到为最低位)十进制转八进制和十六进制方法和转二进制相同,也可以用这种方法转换到其他进制.如 90.875 转换到16进制90/16=5--105/16=0--5整数部分就是 5A(10进制的10 对16进制的A)0.875*16=14小数部分就是 E(10进制的14 对16进制的E)其他进制间的互相转换用二进制数编码,存在这样一个规律:n位二进制数最多能表示2的n次方种状态.因此,诺用一组二进制数表示具有十六种状态的十六进制数,至少要4位(16=2的4次方).同样八位要 3位.如:将111101010011.10111B转换为16进制从小数点开始,分别向左右4位一组划分,不足4位的补0,然后将每组4位的二进制数以1位的十六进制数取代即可.1111 0101 0011 . 1011 10002 A F . C 5 (二进制对应的16进制数)其他进制间的转换一样的方法..自己把握要点.上面列举的方法是我觉得比较简单的方法,关于其他一些方法请自行参考相关书籍.如有错误请指正.
9. 如何快速口算出进制的转换
10转2的话,就取余数 例:153 153/2(0次方开始)%2=1 8进2的话,就单位取余 16进2也是,就单位取余
10. 随机给个十进制的数,怎么快速计算它的十六进制进制
以100这个十进制数转为16进制为例子来说明10进制到16进制的转换。
1. 计算100%16,得到的值4为对应16进制的最低位;
2. 计算100/16得6。
3. 然后对6%16=6。得到的值6为对应16进制的次低位
4. 计算6/16=0,为6时结束循环。
所以100对应的十六进制就是64。
下面给出一个例子程序:
#include<stdio.h>
#define N 8
void tran(int num) // 转换函数
{
int arr[N],i; // N的大小要保证余数都能存进去
for (i=0;i < N;i++)
{
arr[i]=num%16; // 循环上述给出的例子过程,把余数存进数组中
num=num/16;
if(num==0) break; // 为0就退出了
}
printf("转换为16进制数为: ");
for (;i>=0;i--) // arr[0]存的是对应16进制的最低位
switch (arr[i])
{
case 10: printf("A");break;
case 11: printf("B");break;
case 12: printf("C");break;
case 13: printf("D");break;
case 14: printf("E");break;
case 15: printf("F");break;
default: printf("%d",arr[i]);
}
printf("\n");
}
int main()
{
int num;
printf("请输入要转换的十进制数:\n");
scanf("%d",&num);
tran(num);
return 0;
}
上述程序适当修改一番,就能变成10进制向任意进制的转换程序了。看明白后,自己改一改吧。