八进制算法
⑴ 二进制转八进制的算法
把二进制从低位到高位依次三个一组,最后不够的高位补0, 再分别算成十进制数就可以了
如:
0111 1001 0110
分组
011 110 010 110
计算
3626
前面加0以标识是8进制
03626
(1)八进制算法扩展阅读:
进制转换是人们利用符号来计数的方法。进制转换由一组数码符号和两个基本因素“基数”与“位权”构成。
基数是指,进位计数制中所采用的数码(数制中用来表示“量”的符号)的个数。
位权是指,进位制中每一固定位置对应的单位值。
二进制--->八进制
(11001.101)(二)
整数部分:从后往前每三位一组,缺位处用0填补,然后按十进制方法进行转化, 则有:
001=1
011=3
然后我们将结果按从下往上的顺序书写就是:31,那么这个31就是二进制11001的八进制形式
⑵ 谁知道 八进制 十进制 十六进制 算法的啊
将二进制转换为十进制
将二进制转换为十进制
因为所有的 IP 地址和子网掩码值都是由标准长度的 32 位数据字段组成,所以它们被计算机视为并解析成单个的二进制数值型字符串,例如:
10000011 01101011 00000111 00011011
要与 IP 地址简单通讯并在配置中快速输入这些地址,可以使用点分十进制符号从二进制格式转换 IP 地址编号。
使用点分十进制符号,每个 32 位地址编号被视作四个不同的分组,每组 8 位。由 8 个连续位组成的 4 个分组之一被称作八位字节。
第一个八位字节使用前 8 位(第 1 位到第 8 位),第二个八位字节使用其次的 8 位(第 9 位到第 16 位),接下来是第三个八位字节(第 17 位到第 24 位)和第四个八位字节(第 25 位到第 32 位)。句点用于分隔四个八位字节(在 IP 地址中描述为点分十进制数)。
下表是一个八位字节中每一位的位置以及等价的十进制数的科学记数法。
与 IP 地址中一个八位字节中某一位的等价十进制数
八位字节 第 1 位 第 2 位 第 3 位 第 4 位 第 5 位 第 6 位 第 7 位 第 8 位
科学记数法
27
26
25
24
23
22
21
20
十进制符号
128
64
32
16
8
4
2
1
例如,如果第一位是 1,则等价的十进制数是 128。 如果这一位的值是 0,则等价的十进制数也是 0。
如果八位字节中所有位都是 1,则最大的等价十进制数是 255。如果所有位都是 0,则最小的等价十进制数是 0。
要查看 IP 地址中的八位字节如何从 8 位二进制数转换成 0 到 255 的等价十进制数,请看下面的例子。
下面的二进制字符串是 IP 地址中的第一个八位字节:
10000011
在此 8 位二进制数中,第一位、第七位和第八位都是 1。所有其他位都是 0。参考前面的列表,您可以将每一位等价的十进制数简单相加,从而得到这个八位字节字符串的十进制总数,如下所示:
第 1 位 (128) + 第 7 位 (2) + 第 8 位 (1) = 八位字节总数 (131)
由于总和是 131,因此这个示例 IP 地址的第一个八位字节是 131。对其他八位字节采用同样的方法,转换的最终结果就是点分十进制等价值:131.107.7.27。
⑶ 求八进制/十进制/十六进制的算法,详细点更好,有例题更好,求帮忙
十进制是我们经常用的,不用我说了满十进一。八进制和十六进制也是一样的道理,满八进一,满十六进一。
⑷ 将八进制(751)8转换成二进制数.怎么算我想要它的详细算法!先谢了!
变为二进制是111101001
算法是7在二进制里面是111,5是101,1是001
也就是八进制的一位在二进制里要用三个数来表示。
⑸ 八进制转换成十六进制的算法 请举例说明
八进制数转换为十六进制
转换方法:以二进制位中介,即先将八进制数按照一位拆三位的方法转换为二进制,在对这个二进制数使用四位合一位的方法转换为十六进制。
如:将13.4O转换为十六进制。
1、将13.4O转换为二进制。转换方法在本文的01部分,结果是1011.1B。
2、将第一步中的二进制数1011.1B转换为十六进制。整数部分1011正好是四位,组成一组,转换为十六进制是B(可先将1011按权展开得到一个十进制数是11,11对应十六进制的B)。小数部分只有一位,后面要补三个0,组成一组,1000,转换为十六进制是8。所以,转换为十六进制的结果是B.8H。
(5)八进制算法扩展阅读:
十六进制数转换为八进制
转换方法:以二进制位中介,即先将十六进制数按照一位拆四位的方法转换为二进制,在对这个二进制数使用三位合一位的方法转换为八进制。
如:将2BB.2EH转换为八进制。
1、将2BB.2EH转换为二进制。转换方法在本文的02部分,结果是1010111011.0010111B。
2、将第一步中的二进制数1010111011.0010111B转换为八进制。整数部分有10位,前面补两个0,组成四组。小数部分有7位,后面要补两个0,组成三组。转换为八进制的结果是1273.134O。
⑹ 8进制转10进制算法是什么
八进制转换为其他进制数的原则是:逢8进1。八进制化为十进制:例如八进制数1507转换为十进制,7*8^0+0*8^1+5*8^2+1*8^3=839,结果是,八进制数1507转换成十进制数为839。
一种以8为基数的计数法,采用0,1,2,3,4,5,6,7八个数字,逢八进1。一些编程语言中常常以数字0开始表明该数字是八进制。八进制的数和二进制数可以按位对应(八进制一位对应二进制三位),因此常应用在计算机语言中。
(6)八进制算法扩展阅读:
进制有时被用于计算而不是十六进制,也许最常在现代与文件权限下Unix系统。它的优点是不需要任何额外的符号位数(十六进制系统是基数16,因此需要六个附加符号超出0-9)。它全部用于数字显示。
在编程语言中,八进制文字通常与不同的前缀,包括数字0,字母o或q,digit-letter 0 o组合,或符号&[11]或美元。在摩托罗拉惯例,八进制数字加@前缀,而小字母o作为后缀添加,在英特尔公约。DR-DOS调试使用前缀编辑八进制数字。
⑺ 八进制乘法如何计算
八进制的加减乘除的运算规则与二进制、十进制、十六进制都一样,只是八进制是满八向高位进一,或者高位的1相当于低位的八。
而二进制、十六进制是满二、十六向高位进一,或者高位的1相当于低位的二、十六。
八进制的计数规则:
基数为8。
由8个数字组成,分别是0、1、2、3、4、5、6、7。
逢8进1,借1当8。
(7)八进制算法扩展阅读:
十进制化八进制
方法1:采用除8取余法。
例:将十进制数115转化为八进制数
8| 115…… 3
8| 14 …… 6
8| 1 …… 1
结果:(115)10 = (163)8
方法2:先采用十进制化二进制的方法,再将二进制数化为八进制数
例:(115)10 = (1110011)2 = (163)8
⑻ 八进制算法、
以小数点儿为分隔, 对整数部分从右至左, 三位分一组, 对小数部分, 从左至右, 三位为一组, 注意小数部分最后一组不足三位应在尾部被0至三位, 将每一组转换成八进制(其实也就是十进制), 每组得到的新的数字的顺序不变,写下来就是二至八进制的转换. 例如:二进制(11011001.0100101) , 以小数点为分隔分组, 得 11, 011, 001 . 010, 010 100, 最后两个零必须补,然后每组分别转换 331.224, 这个就是对应的8进制.
⑼ C语言 十进制数转换八进制 算法
方法一:直接使用控制字符串 %o 八进制%x
方法二:
求余来算,比如求十进制数 x(x>100) 的8进制,先通过 x%8 可以得到个位(末位)上的数,当十进制数等于8时,必然会进位,求余的结果正好是不能进位的部分,x=x/8(这就像位移,x的8进制数向右移了一位),这样已经求出来的 个位 位移后没有了,原来的十位变成了个位,继续把得到的x按上面的方式求末位,就能求出来十位,按照这种方式得到的 8进制数 是反的(先得到个位,再十位。。。),这样很适合放到栈中,取得时候又会反过来,伪代码可以这样写:
while(x){
printf("%d",x%n);//会打印出x转换为 N进制数 从低位到高位上的每一位数
x/=n;
}
十进制转换N进制:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef int INT;
typedef struct dd
{
INT data;
struct dd *next;
}LNode,*LStack;
LStack pushstack(LStack top,int x)
{
LStack p;
p=(LStack)malloc(sizeof(LNode));
if((x)!=-1) {p->data=(x); p->next=top; top=p;}
return top;
}
LStack outstack(LStack top,int *x)
{
LStack p=top;
*x=p->data;
top=p->next;
free(p);
return top;
}
main()
{
int x,n;
LStack top=NULL;
printf("请输入原数及要转换的进制:");
do{
scanf("%d%d",&x,&n); //输入一个十进制数和要转换的进制,比如3 2 得到1 }while(x>35||x<0||n<2);
while(x){ //这个循环把每一位放到栈中
top=pushstack(top,x%n);
x/=n;
while(top!=NULL)
{
top=outstack(top,&x);
if(x<10)
printf("%c",x+'0');
else
printf("%c",x+'A'-10);
}
return 0; }