八進制演算法
⑴ 二進制轉八進制的演算法
把二進制從低位到高位依次三個一組,最後不夠的高位補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; }