關於二進位制的問題,關於二進位制的問題

2022-11-15 07:35:16 字數 8001 閱讀 3942

1樓:

二進位制其實沒有那麼的神祕,所謂的滿二進一,就好像我們現在生活中經常碰到的滿10進一是一個道理,只是2進位制中只有0,1兩個數,1+1=2,就如同1+9=10一樣,要從一位進到兩位,如果按照數數的方法來說,0,1,10,11,100,101……逐個的進位就可以了,對應十進位制就是1,2,3,4,5……。在十進位制中,我們不也是從零開始逐個加1,加到9再加1的時候就進位成10了嗎?但是如果想深入瞭解,就要了解二進位制每一位代表的意義了,二進位制從第一位開始就是2的0次方,然後依次第二位就是2的一次方、二的二次方等,最後把所有位數上的2的方次都計算出來進行加和,就是對應的十進位制了

2樓:匿名使用者

二進位制數

一、二進位制數的表示法

二進位制是計算技術中廣泛採用的一種數制。二進位制數是用0和1兩個數碼來表示的數。它的基數為2,進位規則是「逢二進一」,借位規則是「借一當二」。

二進位制數也是採用位置計數法,其位權是以2為底的冪。例如二進位制數110.11,其權的大小順序為22、21、20、2-1、2-2。

對於有n位整數,m位小數的二進位制數用加權係數式表示,可寫為:

(n)2=an-1×2n-1+an-2×2n-2+……+a1×21+a0×20+a-1×2-1+a-2×2-2

+……+a-m×2-m=

式中aj表示第j位的係數,它為0和1中的某一個數。

二進位制數一般可寫為:(an-1an-2…a1a0.a-1a-2…a-m)2。

【例1102】將二進位制數111.01寫成加權係數的形式。

解: (111.01)2=1×22+l×21+1×20+1×2-2

二、二進位制數的加法和乘法運算

二進位制數的算術運算的基本規律和十進位制數的運算十分相似。最常用的是加法運算和乘法運算。

1. 二進位制加法

有四種情況: 0+0=0

0+1=1

1+0=1

1+1=0 進位為1

【例1103】求 (1101)2+(1011)2 的和

解: 1 1 0 1

+ 1 0 1 1

1 1 0 0 0

2. 二進位制乘法

有四種情況: 0×0=0

1×0=0

0×1=0

1×1=1

【例1104】求 (1110)2 乘(101)2 之積

解: 1 1 1 0

× 1 0 1

1 1 1 0

0 0 0 0

+ 1 1 1 0

1 0 0 0 1 1 0

關於二進位制的一些問題

3樓:匿名使用者

該編碼方案採用7位二進位制數編碼組成。

西文26個字母(區分大小寫)即26*2=52個,以及0~9十個數字以及33個標點符號,那麼該編碼方案至少需要表示的非數值資訊個數是:52+10+33=95。

2^6=64,2^7=128。128>95,所以,用7位二進位制數編碼組成。

關於二進位制數計算的具體方法,,,請多聚幾個例子,,尤其是小的二進位制數減去大的二進位制數的問題

4樓:寶寶

減法:最好採用補碼運算 把二進位制數轉換成加法運算,減去一個數等於加上他的補碼

5樓:營長和他朋友的百家號

樓上的仁兄只回答了一半,我把另一半貼出來吧:

舉個例子:

00001001(9)

-00001110(14)

————————

????????

照道理講這應該是-5對吧,但是像上面那樣解是有點困難,於是我們就發明了補碼

7-14<=>7+(-14) ------->00001001

+10001110(補)

————————

????????

<=>這裡普及一下補碼知識啊[正數的補碼:就是原碼,負數的補碼:原碼符號位不變,其餘部分按位取反再+1]

00001001

+11110010

——————

11111011

這裡還沒完事呢

我們隊結果還要在進行取補操作

得:10000100+1=10000101(-5)

關於十進位制轉換二進位制的誤差問題

6樓:西域牛仔王

誤差小於千分之五,是說轉換後的數 x 與之前的數 0.32 的差的絕對值除以 0.32,結果小於 0.005 ,

也就是 |x-0.32|<0.0016 ,所以 0.3184

按乘以 2 取整法,

0.32*2=0.64,----------00.

64*2=1.28,----------10.28*2=0.

56,----------00.56*2=1.12,----------10.

12*2=0.24,----------00.24*2=0.

48,----------00.48*2=0.96,----------約等於 1 ,因此 0.

32 轉換為 2 進位制約等於 0.0101001 (這個數轉換為 10 進位制是 0.3203125,在精度範圍內)。

7樓:

覺得應該是0.32的千分之五

二進位制:關於10000000如何表示-128的問題

8樓:熙苒

對的,有符號數 最高位是符號位。於是,計算機裡 +0 和 -0 編碼是不一樣的。計算機裡負數用補碼錶示,為的是減法可以用加法器執行。

10000000 那個1是表示負數,但整個值是 -128,這是特殊的規定。

就這一個值特殊。不能用尋常的減1求反判斷。這是為了讓有符號數,多1個有用的資料點,讓可描述的數值範圍從 -127 - +127 擴大到 -128 - +127。

只不過 把 -0 和 +0 合為 +0。

當然,一定要追問 怎麼算出 -128 的。需要增加1個更高位來考慮。考慮完了,再去掉那位。

負數在現代計算機裡一般用補碼錶示:最高位是符號位,其餘位為數字的原碼取反+1

1000 0000還原為原碼:

最高位是1,表示負數,剩餘的各位取反 111 1111 再+1 得到 1000 0000, +128的原碼,整個數為-128

負數求負整數的補碼,將其對應正數二進位制表示所有位取反(包括符號位,0變1,1變0)後加1 。

同一個數字在不同的補碼錶示形式中是不同的。比如-15的補碼,在8位二進位制中是11110001,然而在16位二進位制補碼錶示中,就是1111111111110001。以下都使用8位2進位制來表示。

與十進位制

(1)二進位制轉十進位制

方法:「按權求和」

【例】:

規律:個位上的數字的次數是0,十位上的數字的次數是1,......,依次遞增,而十

分位的數字的次數是-1,百分位上數字的次數是-2,......,依次遞減。

注意:不是任何一個十進位制小數都能轉換成有限位的二進位制數。

(2)十進位制轉二進位制

· 十進位制整數轉二進位制數:「除以2取餘,逆序排列」(除二取餘法)

【例】:

89÷2 ……1

44÷2 ……0

22÷2 ……0

11÷2 ……1

5÷2 ……1

2÷2 ……0

1· 十進位制小數轉二進位制數:「乘以2取整,順序排列」(乘2取整法)

【例】: (0.625)10= (0.101)2

0.625x2=1.25 ……1

0.25 x2=0.50 ……0

0.50 x2=1.00 ……1

.十進位制負數轉二進位制:「先取正數的二進位制值,再取反,加1」

【例】:(-31)10 = (1)2

31的二進位制數為11111,取反00000,加1得1。

與八進位制

二進位制數轉換成八進位制數:從小數點開始,整數部分向左、小數部分向右,每3位為一組用一位八進位制數的數字表示,不足3位的要用「0」補足3位,就得到一個八進位制數。

八進位制數轉換成二進位制數:把每一個八進位制數轉換成3位的二進位制數,就得到一個二進位制數。

八進位制數字與十進位制數字對應關係如下:

000 -> 0 | 004-> 4 | 010=8

001 -> 1 |005 -> 5| 011=9

002 -> 2 |006 -> 6 | 012=10

003 -> 3 |007 -> 7 | 013=11

【例】:將八進位制的37.416轉換成二進位制數:

3 7 . 4 1 6

011 111 .100 001 110

即:(37.416)8 =(11111.10000111)2

【例】:將二進位制的10110.0011 轉換成八進位制:

0 1 0 1 1 0 . 0 0 1 1 0 0

2 6 . 1 4

即:(10110.0011)2 = (26.14)8

與十六進位制

二進位制數轉換成十六進位制數:二進位制數轉換成十六進位制數時,只要從小數點位置開始,向左或向右每四位二進位制劃分一組(不足四位數可補0),然後寫出每一組二進位制數所對應的十六進位制數碼即可。

十六進位制數轉換成二進位制數:把每一個十六進位制數轉換成4位的二進位制數,就得到一個二進位制數。

十六進位制數字與二進位制數字的對應關係如下:

0000 -> 0 0100 -> 4 1000 -> 8 1100 -> c

0001 -> 1 0101 -> 5 1001 -> 9 1101 -> d

0010 -> 2 0110 -> 6 1010 -> a 1110 -> e

0011 -> 3 0111 -> 7 1011 -> b 1111 -> f

【例】:將十六進位制數5df.9 轉換成二進位制:

5 d f . 9

0101 1101 1111 .1001

即:(5df.9)16 =(10111011111.1001)2

【例】:將二進位制數1100001.111 轉換成十六進位制:

0110 0001 . 1110

6 1 . e

即:(1100001.111)2 =(61.e)16

9樓:莊政警

給你轉一篇文章,這個應該可以消除你的疑惑:

c 語言關於補碼的解釋及誤區

在中文的c 語言教材中,總有些人被原碼、反碼、補碼弄得暈頭轉向,(其實我也覺得反碼之類的東西是有些人自作聰明弄出來的定義,反而弄得 人暈頭轉向,有時候簡單挺好)

正文開始: 關於補碼,看過一些書籍和網文,基本都是在"求反加一"的方法、步驟上 反覆強調,而對於補碼的本質和定義,討論的不足。這就對初學者的造成了誤 導,使得很多人都糾結在-128 的補碼求取過程中。

關於反碼和原碼,大家都是在鄭重其事的講解,其實,學過的人都知道, 它們的重要性是0!

做而論道把自己對於補碼的認識寫在下面,但願對讀者有些幫助:

加法器 計算機裡面,只有加法器,沒有減法器,所有的減法運算,都必須用加法 進行。 即:減去某個數字(或者說加上某個負數)的運算,都應該研究如何用加法 來完成。

模、補數 在日常生活當中,可以看到很多這樣的事情: 把某物體左轉90 度,和右轉270 度,在不考慮圈數的條件下,最終的效果 是相同的; 把分針倒撥20 分鐘,和正撥40 分鐘,在不考慮時針的條件下,效果也是 相同的; 把數字87,減去25,和加上75,在不考慮百位數的條件下,效果也是相 同的; …。 上述幾組數字,有這樣的關係:

90+270=360 20+40=60 25+75=100 式中的360、60 和100,就是"模"(也可以理解成"進位制")。 式中的90 和270、20 和40,以及25 和75,就是一對對"互補"的數字。 知道了"模",求某個數字的"補數",就是輕而易舉的了:

如果模為365,數字120 的補數為:365-120=245。 用補數代替原數,可把減法轉變為加法。

出現的進位就是模,此時的進位, 就應該忽略不計。 二進位制數的模 前面說過的十進位制數25 和75,它們是2 位數的運算,模是100,即1 的後 面加上2 個0。 如果有3 位數參加運算,模就是1000,即1 的後面加上3 個0。

這裡的1000,是十進位制數的一千,可以寫成10^3,即10 的3 次方。 推論:有多少位數參加運算,模就是在1 的後面加上多少個0。

對於二進位制數字,模也是這樣推算。 如果是3 位二進位制數參加運算,模就是1000,即1 的後面加上3 個0; 那麼當8 位二進位制數參加運算,模就是1 0000 0000,即1 的後面加上8 個0。 16 位二進位制數參加運算,模可就大了,是1 的後面加上16 個0。

注意:這裡提到的1、0,都是二進位制數。 8 位二進位制數的模可以按照十進位制寫成2^8,即256。

16 位數二進位制數的模,就是2^16,按照十進位制,它就是65536。 二進位制數的補碼 求二進位制數的補數,目的是往計算機裡面存放。 在計算機裡面,存放的數字什麼的,都稱為機器碼;那麼二進位制形式的補 數,也就改稱為補碼了。

一般情況下,都是以8 位二進位制數來討論補碼,少數也有用16 位數的。 計算時加上正數,是不需要進行求取補數的;只有進行減法(或者加上負 數),才需要對減數求補數。 補碼就是按照這個要求來定義的:

正數不變,負數即用模減去絕對值。 已知一個數x,其8 位字長的補碼定義為: /x 0=x=+127;正數和0 的補碼,就是該數字本身 [x]補=| ^8-|x|-128=x 0;負數的補碼,就是用1 0000 0000(2 的8 次方),減去該 數字的絕對值 例如x=-126,其補碼為1000 0010,計算方法如下:

1 0000 0000 -0111 1110 - 1000 0010 可以看出,按照補碼的定義來求補碼,概念十分清晰,方法、步驟也是十 分簡單的。 應用補碼進行計算 用補碼計算:83-25=58。

83-都變

成補碼,再用加法運算-0101 0011 -25-1 0000 0000-0001 1001-+1110 0111 -- 58-忽略進位1,結果就是正確的-[1]0011 1010 計算結果如果超出了-128~+127 的範圍,結果將是錯誤的,這是沒有辦法 糾正的。 應用補碼進行計算,完全符合前面介紹的"用補數可把減法轉換成加法"的 做法,只要忽略進位(這個進位1,就是求補的時候,加進去的1 0000 0000 中 的1),結果就是正確的。

這些關於補數、補碼的定義、方法、步驟,讀者如果看懂了前面的文字, 相信大家自己都可以總結出來。 那麼為什麼總有些網友要提出關於求取補碼的問題呢? 在做而論道看來,就是因為很多教材和網文都在這個問題上"畫蛇添足"。

關於補碼的蛇足 補碼出現後,後人又補充了不少"蛇足":符號位、求反加

一、原碼、反碼.。 下面的**給出了一些8 位數的補碼。 -符號位 從這個**中,可以看出特點:

正數的最高位都是 0,負數的最高位都是 1。 這樣一來,有人就把最高位理解成了符號位。說什麼是規定的用0 代表正 號,.。

並且鄭重其事的補充說明:"符號位也參加運算"。真能忽悠!

賣柺、賣 車的都甘拜下風。 其實,前面說過的補數和補碼的定義式裡面,根本就沒有什麼符號位。這 最高位的1、0 是自然出現的,並不是由人來規定的。

-求反加一 負數補碼的後面七位,也可以看出一個不完全的規律:它們和絕對值之間 存在著"求反加一"的關係。 於是,又有人推出了這個不同於定義式的演算法。

-原碼和反碼 由於使用"求反加一"來求取補碼,順便又引出了原碼和反碼兩個垃圾概念。 其實,"求反加一"的計算方法只是適用於計算二進位制形式的補數,它並不 是通用的。 並且把"求反加一"用於求-128 的補碼,有個溢位的現象,很多人都在這裡 被弄瘸了很長時間。

原碼和反碼也只不過是"人工"進行"求反加一"時的中間過程,在計算機裡 面根本是不存在的,它們也就沒有絲毫用處。 做而論道的建議 求取補碼,就按照定義的規定,負數採用"模減去絕對值"的方法來求,這 是求補數的通用方法,適合於各種進位制、各種大小的數字。 不要用求反加一的方法,也就不用理會原碼和反碼了,也不牽涉符號位的 問題。

以後的計算,也就沒有必要特殊說明:"符號位一起參加運算.",因為根本 就沒有什麼符號位。

如果把原碼和反碼、符號位等等垃圾概念,從計算機的書中刪減掉,學習 補碼將會省力不少。

什麼是二進位制?二進位制怎麼算,二進位制是什麼意思,怎麼算

二進位制 binary 在數學和數位電路中指以2為基數的記數系統,以2為基數代表系統是二進位制的。這一系統中,通常用兩個不同的符號0 代表零 和1 代表一 來表示 1 數位電子電路中,邏輯閘的實現直接應用了二進位制,因此現代的計算機和依賴計算機的裝置裡都用到二進位制。每個數字稱為一個位元 bit,b...

二進位制三進位制十二進位制十六進位制用於什麼

通常二進位制用於bai數字系統,例 du如計算機 電zhi子數字計算機 系統dao。十六進 在過去用於稱量屬 16兩為1斤 現在一般用於二進位制系統中的簡化表示 1位十六進位制可以表示4位二進位制。三進位制比較少見,在進行隊伍的口令中可以見到 1 1 121。十二進位制在鐘錶上常見 時針每12小時轉...

請問十進位制如何轉換成二進位制,二進位制數如何轉換成十進位制數?

還是寫基數,舉個複雜些的例子,你可以選擇僅涉及整數的部分來用 95.625轉換成二進位制 先寫二進位制各位基數 從1開始寫,右邊寫個小數點,先向左邊逐位寫,每位是右邊位陣列乘以2,寫到比95大為止 128 64 32 16 8 4 2 1.然後向左邊寫,每項是左邊項除以2,寫 三 四項即可 128 ...