對於各進製之間的轉換有什麼好方法嗎?

時間 2021-05-05 15:36:17

1樓:狗尾草的小確幸

1.十進位制轉換為二進位制

做除法,餘數逆序

10(10進製)------->>> 1010(2進製)10/2 商為5 餘數為0

5/2 商為2 餘數為 1

2/2 商為1 餘數為 0

1/2 商為0 餘數1

2.十進位制轉八進位制

10(10進製)---->> 12(八進位制)10/8 商為1 餘數 2

1/8 商為0 餘數1

3.十進位制轉換為十六進製制

直接除以16,餘數在10-15之間用a~f來表示10(10進製)-----》a

4.二進位制轉十進位制

當前的數字,乘以2的位數次方,最後相加

0*2^0 + 1*2^1 +

5.八進位制轉二進位制

一轉三位,八進位制中的1位相當於二進位制中的三位,轉換的時候按照十進位制進行轉換

65(8) ---》 110101(2)

6----》110

5---》101

6.二進位制轉換為八進位制

三位轉1位,從低位取,高位不夠補0

110101(2)----》 65(8)

7.十六進製制----》二進位制一位轉4位

十六進製制的一位相當於二進位制的4位,轉換時按照十進位制進行轉換a4(16)----->1010 0100(2)a ---> 1010

4 -----> 0100

8.二進位制轉為十六進製制

四轉1 從低位取,高位不夠補0

十進位制轉換為八進位制或則十六進製制

(可以先將10----》2---》8/16)

2樓:pw0

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define br break

#define wh while

#define re return

#define co continue

#define ll long long

#define bi 0x7fffffff

#define sm -0x7fffffff

#define en printf("\n")

#define cl(a) memset(a,0,sizeof(a))

#define fi(a) memset(a,127/3,sizeof(a))

#define sd1(a) scanf("%d",&a)

#define sd2(a,b) scanf("%d%d",&a,&b)

#define sd3(a,b,c) scanf("%d%d%d",&a,&b,&c)

#define slf1(a) scanf("%lf",&a)

#define slf2(a,b) scanf("%lf%lf",&a,&b)

#define slf3(a,b,c) scanf("%lf%lf%lf",&a,&b,&c)

#define sll1(a) scanf("%I64d",&a)

#define sll2(a,b) scanf("%I64d%I64d",&a,&b)

#define sll3(a,b,c) scanf("%I64d%I64d%I64d",&a,&b,&c)

#define pd0(a) printf("%d",a)

#define pd(a) printf("%d\n",a)

#define pd_(a) printf("%d ",a)

#define pll0(a) printf("%I64d",a)

#define pll(a) printf("%I64d\n",a)

#define pll_(a) printf("%I64d ",a)

#define fr(a,b,c) for(int a=b;a<=c;a++)

#define fo(a,b,c) for(int a=b;a>=c;a--)

#define frl(a,b,c) for(long long a=b;a<=c;a++)

#define fol(a,b,c) for(long long a=b;a>=c;a--)

using

namespace

std;lla

[512

][201

],ans

[201],k

,w,al

=1;int

main

()if((i

!=1)||

(j!=1

))fr(l

,1,a

[j-1

][0])a

[j][l

]+=a[

j-1][

l],a[

j][l+

1]+=a

[j][l

]/10,

a[j][

l]=a

[j][l

]%10;

a[j][

0]=max(a

[j][0

],a[j

-1][0

]);wh(a

[j][a

[j][0

]+1]

!=0)a

[j][0

]++;intt=

0;if((i==

p-1)

&&(j>1)

&&(j<=w/

k))t++

;if((j

==w/k

)&&(i

<=p-

2)&&(

i>p-

(1<<(w

%k))-

1))t++

;if(t

>0)}fo(i

,al,1

)pd0

(ans[i

]);re0;

}2的k進製數。可以處理包括負進製的任意進製,自己寫的,不謝。

3樓:閉口禪

不借助程式的話,首先2^0, 2^12記熟吧。然後建議去學下微控制器八位流水燈和數碼管編碼幫助理解。如果你是單純的懶,無解。

4樓:yang元祐

Python 解決,簡單易懂q=

True

whileq:

num=

input

('請輸入乙個整數(輸入Q結束程式):')ifnum!=

'Q':

num=

int(

num)

print

('十進位制 -> 十六進製制 :

%d-> 0x%x'

%(num,

num))

print

('十進位制 -> 八進位制 :

%d-> 0o%o'

%(num,

num))

print

('十進位制 -> 二進位制 :

%d-> '

%num

,bin

(num

))else:q

=False

執行結果請輸入乙個整數(輸入

Q結束程式):

78十進位制

->十六進製制:78

->0x4e

十進位制->

八進位制:

78->

0o116

十進位制->

二進位制:

78->

0b1001110

請輸入乙個整數(輸入

Q結束程式):

26十進位制

->十六進製制:26

->0x1a

十進位制->

八進位制:

26->

0o32

十進位制->

二進位制:

26->

0b11010

請輸入乙個整數(輸入

Q結束程式):

5樓:

這個回答給 OS X 使用者的。

---不過都完機靈還是要多說兩句的。一般情況下要求計算的數字不大是可以湊出來的,不過你要對幾個二進位制整數比較熟悉,比如:

1,2,4,8,16,32,64,128,256,512,1024,2048,4096……然後記住它們對應的是2的幾次方,然後挨個減。

例如:345轉2進製,找最接近它而且小於它的,345-256=89, 2^8*1,

89-128<0, 2^7*0,

89-64=25, 2^6*1,

25-32<0, 2^5*0,

25-16=9, 2^4*1,

9-8=1, 2^3*1,

1-4<0, 2^2*0,

1-2<0, 2^1*0,

1, 2^0*1

所以345=101011001

然後二進位制轉換8和16就簡單的多。。。時間不夠去上課了。。

6樓:

說一下最常用的10進製轉2進製吧,注:此方法適合較小數字的換算,但心算速度較快

首先你需要記住一些的2的N次方(玩過2048吧?就是那些數字)例如:2,4,6,8,16,32.......2048,4096,8192等等

比如需要得到10000的2進製是多少

首先找到小於10000並且最接近10000的數,8192用10000 / 8192=1 (1808)(之後用1808除4096

1808 / 4096=0 (1808)

1808 / 2048=0 (1808)

1808 / 1024=1 (784)

784 / 512=1 (272)

272 / 256=1 (16)

16 / 128=0 (16)

16 / 64=0 (16)

16 / 32=0 (16)

16 / 16=1 (0)

0 / 8=0 (16)

0 / 4=0 (16)

0 / 2=0 (16)

0 / 2=0 (16)

結果為:10011100010000

7樓:

按下 F12

1.按下「F12」,調出控制台

2. parseInt("0xad",16).toString(2)怎麼玩都行···

8樓:夢遺的新娘

我教人的辦法是統一用2進製中轉。

2進製轉16進製制,從末尾隔四位打逗號,最前面不足四位補0,然後把0000-1111轉化成對應的0-F。轉8進製就是隔三位打逗號,然後把000-111轉化成0-7。

16進製制轉2進製就是逆操作,逐位把0-F轉換成0000-1111。8進製逐位轉為000-111。

2進製轉10進製,從末尾開始逐個在2進製每位數字下寫1,2,4,8,16,32,64,128,256,512,1024,2048,4096,8192……(最好背下來這幾個,後面不夠用再臨時算)。這樣就變成了上面一行2進製,下面一行2的冪。然後看上面是1的,把下面加起來就行了。

10進製轉2進製,也要用到上面那兩行,先看這個10進製的數在上面第二行的哪兩個數之間,比如5398,在4096和8192之間,那就在4096的那位寫1,然後用5398減4096得到1302,用1302再和2048比,比之小,在2048這位寫0,然後繼續和1024比…總之就是從高位往低位比大小,大的寫1同時做減法,小的直接寫0。其實理論上也是逆操作,把它拆成2的冪的和的表示式,有的寫1沒的寫0。

其他轉化的話,先中轉成2進製然後轉成你想要的,這樣看起來貌似多了一步其實速度也不慢,因為2進製和16/8進製之間轉化很快。而且因為是兩步,如果第一步沒問題第二步錯了,從中間來就好。整個過程只有加減法,比什麼除幾取餘簡單多了。

c 不同類的物件之間自動型別轉換有什麼用?

Pluto Hades 這設計太有用了好嗎 舉個例子,我定義了幾個類,分別是utf8string,utf16string,utf32string,gb18030string。寫好自動型別轉換的方法,再過載操作符 這樣我就能從一種編碼的字串直接構造另一種,還能直接在不同編碼的字串直接互相賦值,多方便 ...

對於祛濕有什麼好的方法?

現磨五穀養生粉 運動祛濕,堅持運動,這個還是不錯的。食療祛濕,赤小豆薏公尺芡實茯苓等食材,可以自己熬水喝,也可以買現成的粉粉沖泡喝,還是不錯的。 祛濕驅寒健脾師 祛濕最快的3個方法,做法都很簡單 身體濕氣過重其實是會導致陰陽失調的,這樣時間久了就會讓人身體出現疲憊的情況,影響正常的工作和生活。想要去...

對於周易,大家有什麼好的學習方法?

欣欣 先學基礎再看書 一天最少抽個一小時學習開頭別給自己定大目標多找同愛好小夥伴一起練習 五行不紮實真的沒法入門 目前我也是乙個小白 我是乙隻叮咚貓 知乎首答,首先說一下,大學生加一,同樣愛好周易,專於六爻,至於梅花,八字,奇門,六壬,面相,手相曾接觸過,怎麼說呢,如果真的想靠這個裝逼,入門需要月餘...