日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

编程基础知识(变简单的进制转换)

發布時間:2023/12/14 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 编程基础知识(变简单的进制转换) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

編程基礎——進制轉換

前言

? ?世界上有10種人,懂二進制的和不懂二進制的。
? ?有同學會問,你說世界上有10種人,為啥只說了兩個呢。這里的10可不一定是自然數十,也可能是二進制的一和零,不懂的同學看完這篇文章保證你明明白白(不明白你來打我)。
? ?

一、什么是進制

? ?進制就是進位制,是人們規定的一種進位方法。比如X進制,就是每逢X就進一位。二進制是逢二進一,八進制是逢八進一,十進制是逢十進一,十六進制是逢十六進一。一個數值可以在不同的進制之間轉換,就是我們接下來要講的進制轉換。
? ?

二、二進制轉十進制

1.按權相加法

? ?將二進制每一位上的數乘以權,然后加起來的和就是十進制。
? ?
? ?權:假設X進制,整數部分的第i位的權是Xi?1X^{i-1}Xi?1,小數部分第i位權為X?iX^{-i}X?i.
? ?
? ?將二進制101.01轉換為十進制,示例如下:
? ?
? ?1?22+0?21+1?20+0?2?1+1?2?2=5.251*2^2+0*2^1+1*2^0+0*2^{-1}+1*2^{-2}=5.251?22+0?21+1?20+0?2?1+1?2?2=5.25
? ?
? ?因為0乘任何數都為零,所以我們可以簡化一下:
? ?
? ?1?22+1?20+1?2?2=5.251*2^2+1*2^0+1*2^{-2}=5.251?22+1?20+1?2?2=5.25
? ?

2.口算法

? ?如果你嫌上面的算法太繁瑣,可以練習口算,我個人比較喜歡的一種方法,適合日常計算一些簡短的二進制(常用于計算IP地址)。你仔細觀察的話會發現上面的公式是有規律的:將二進制位上的數乘以權i,結果是000或是2i2^i2i,這有就像在玩2048游戲。

2048 1024 512 256 128 64 32 16 8 4 2 1

? ?把上面的數背過,有能力的話可以背更多,然后對照起來就可以用簡單的加法轉換二進制。
? ?
? ?舉個栗子:

二進制:1 1 0 1 0 1 0 1 對照: 128 64 32 16 8 4 2 1

? ?將二進制1對應位置的數相加,0對應的數忽略,結果為
? ?
? ?128+64+0+16+0+4+0+1=213128+64+0+16+0+4+0+1=213128+64+0+16+0+4+0+1=213
? ?

三、十進制轉二進制

? ?十進制轉換二進制時,整數與小數部分轉換方法不同,我們可以分開轉換,最后再合并一起。

1.整數部分—除二取余法

? ?將整數部分除以2,取余數,商繼續除2,直到商為0為止,最終余數倒著寫出來就是轉換完成的二進制數。
? ?
? ?比如將十進制數10,轉換為二進制數:

10/2=505/2=212/2=101/2=01

? ?將余數從后到前列出來,就是10的二進制數:1010
? ?

2.小數部分—乘二取整法

? ?將小數部分乘以2,取整數部分,剩余小數繼續乘以2,直到小數部分為0為止。
? ?
? ?比如將十進制小數0.125,轉換為二進制數:

0.125*2=0.25 整數部分0 0.25*2=0.5 整數部分0 0.5*2=1 整數部分1

? ?注意小數部分不是逆序取值了,而是順序,所以0.125的二進制數是:001
? ?

3.口算法

? ?跟二進制轉十進制的原理是一樣的,只不過是反著來而已。用十進制數減參照數(最接近本身數值,又小于等于本身數值的),減的開就得1,減不開就得0,差繼續遞減參照數。

2048 1024 512 256 128 64 32 16 8 4 2 1

? ?比如我們再把213轉回去:

213-128=85 減開得1 85-64=21 減開得1 21-32 減不開得0 21-16=5 減開得1 5-8 減不開得0 5-4=1 減開得1 1-2 減不開得0 1-1 減開得1

? ?最終結果為:1101 0101,是不是和上面一樣。
? ?

四、二進制轉八進制

? ?八進制與二進制的關系:23=82^3=823=8,即用三位二進制數表示一個八進制數。

1.取三合一法

? ?從二進制小數點位置,向左向右每三位取成一位(不足三位補零),將每一位的三個二進制數轉換為十進制數,然后按順序排列,得到的便是八進制數。
? ?
? ?如將1101.01轉化為八進制:

001 101 . 0101 5 . 2

? ?最終結果為:15.2
? ?

五、八進制轉二進制

1.取一分三法

? ?逆行上面的算法,將八進制每一位數分解成三位二進制數,然后去零,便能得到結果。
? ?
? ?如將八進制數43.2轉換為二進制數:

4 3 . 2 100 011 . 010

? ?最終結果為:100 011.01
? ?

六、二進制轉十六進制

? ?二進制與十六進制的關系:24=162^4=1624=16,即用四位二進制數表示一個十六進制數。相信大家都猜到了,他們的轉換方式與八進制的相似。
? ?

1.取四合一法

? ?從二進制小數點位置,向左向右每四位取成一位(不足四位補零),將每一位的四個二進制數轉換為十進制數,然后按順序排列,得到的便是十六進制數。
? ?
? ?如將二進制數101011.101轉換為十六進制:

0010 1011 . 10102 B . A

? ?最終結果為:2B.A
? ?

七、十六進制轉二進制

1.取一分四法

? ?將一位十六進制數分解為四位二進制數,去掉多余的零。
? ?
? ?如將十六進制數6E.2轉換成二進制數:

6 E . 2 0110 1110 . 0010110 1110 . 001 \\去零

? ?得到最終結果為:110 1110 . 001
? ?

八、十六進制與八進制的轉換

? ?十六進制與八進制不能直接轉換,可以先將其轉換為二進制,再轉換為其他進制。
? ?

九、八進制、十六進制、十進制之間的轉換

1.直接轉換

? ?與二進制按權相加法相同,只需改變XXX的值便可。
? ?
? ?將XXX進制每一位上的數乘以權,然后加起來的和就是十進制。
? ?
? ?權:假設X進制,整數部分的第i位的權是Xi?1X^{i-1}Xi?1,小數部分第i位權為X?iX^{-i}X?i.
? ?

2.間接轉換

? ?先將其轉換為二進制數,再將二進制數轉換為相應進制數即可。
? ?

結束語

? ?有的同學剛接觸進制轉換可能會比較懵逼,甚至不清楚進制的含義,其實只要把二進制弄明白,其余進制的轉換就會變得很EZ。
? ?
? ?還沒看懂的同學先別著急拔刀,讓我先跑39米,溜了~

總結

以上是生活随笔為你收集整理的编程基础知识(变简单的进制转换)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。