我教人的辦法是統一用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進位制之間轉化很快。而且因為是兩步,如果第一步沒問題第二步錯了,從中間來就好。整個過程只有加減法,比什麼除幾取餘簡單多了。
我教人的辦法是統一用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進位制之間轉化很快。而且因為是兩步,如果第一步沒問題第二步錯了,從中間來就好。整個過程只有加減法,比什麼除幾取餘簡單多了。