我是靠谱客的博主 等待小甜瓜,最近开发中收集的这篇文章主要介绍【数字电子技术 Digital Electronic Technology 1】——数制和码制 之 不同数制的转换以及二进制算术运算2. 不同数制之间的转换3. 二进制数的计算,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

文章目录

  • 2. 不同数制之间的转换
    • 2.1. 十进制和二进制之间的转换
    • 2.2.二进制转八进制/十六进制
    • 2.3.八进制/十六进制转二进制
    • 2.4 二进制数转8421BCD码
  • 3. 二进制数的计算
    • 3.1.加减乘除
    • 3.2.反码和补码
      • 3.2.1反码,补码的求法
      • 3.2.2.关于符号的问题
      • 3.2.3.补码的意义

2. 不同数制之间的转换

2.1. 十进制和二进制之间的转换

  • 方法一:除2取余法
  • 方法二:这个方法非常快捷,它的思路来源于二进制转化十进制的过程:
    比如说有一个二进制数 ( k n k n − 1 ⋯ k 0 . k − 1 k − 2 ⋯ k − m ) 2 (k_nk_{n-1}cdots k_0.k_{-1}k_{-2}cdots k_{-m})_2 (knkn1k0.k1k2km)2 那么,它转化为十进制数的方式如下: k n ∗ 2 n + k n − 1 ∗ 2 n − 1 + ⋯ + k 0 ∗ 1 + k − 1 ∗ 2 − 1 + k − 2 ∗ 2 − 2 + ⋯ + k − m ∗ 2 − m k_n * 2^n + k_{n-1} * 2^{n-1} + cdots + k_0 * 1 + k_{-1} * 2^{-1} + k_{-2} * 2^{-2} + cdots + k_{-m} * 2^{-m} kn2n+kn12n1++k01+k121+k222++km2m
    对于这个式子,反过来,如果我们想要把十进制转化为二进制,就是要确定这些 k n , k n − 1 , ⋯ k 0 , k − 1 , k − 2 , ⋯ k − m k_n, k_{n-1}, cdots k_0, k_{-1}, k_{-2}, cdots k_{-m} kn,kn1,k0,k1,k2,km
    因此,我们下面举一个例子,加入要转化为八位二进制的十进制数是83
    s t e p 1 step 1 step1:先将二进制数八位的权重都写出来,如下: 128 64 32 16 8 4 2 1 128 quad64 quad32 quad16quad 8quad 4 quad2quad 1 1286432168421
    s t e p 2 step2 step2:现在,我们要做的就是找到权重里面比83小的最大整数,OK,是64对吧,因此我们可以确定这个位置应该是1,我们做下标记: 128 64 32 16 8 4 2 1 0 1 128 quad64 quad32 quad16quad 8quad 4 quad2quad 1\ 0 quad quad1 quad quad quad quad quad quad quad quad quad quad 128643216842101
    s t e p 3 step3 step3:用83 - 64,得到19,同样的,在剩余的权值里面找到比19小的最大整数,是16,因此,16对应的位置应该也是1,继续标记: 128 64 32 16 8 4 2 1 0    1    0      1                 128 quad64 quad32 quad16quad 8quad 4 quad2quad 1\ 0thinspacethinspacequad1thinspacethinspacequad0thinspacethinspacequadthinspace1thinspacethinspacethinspacequadthinspacethinspacethinspacequadthinspacethinspacethinspacequadthinspacethinspacethinspacequad 12864321684210101
    s t e p 4 step4 step4:重复上述步骤,最终我们得到的二进制数就是: 0 1 0 1 0 0 1 1 0quad1quad0quad1quad0quad0quad1quad1 01010011

2.2.二进制转八进制/十六进制

对于二进制转八进制而言,我们先把二进制数的整数部分从右到左小数部分从左到右,每三位二进制数为一组划分(整数部分最高位一组不足3个时用0补,小数部分最低为不足3为时用0补),然后,分别对于每一组二进制数,直接把它们转化为十进制数即可

下面举一个例子:将 ( 011110.010111 ) 2 (011110.010111)_2 (011110.010111)2转化为八进制数
s t e p 1 step1 step1:先分组 011 ⏡   110 ⏡ . 010 ⏡   111 ⏡ undergroup{011}thinspaceundergroup{110}.undergroup{010}thinspaceundergroup{111} 011 110. 010 111
s t e p 2 step2 step2:接着,对于每一组,求出它们表示的十进制数即可,例如011那组表示的十进制数就是: 0 ∗ 2 2 + 1 ∗ 2 1 + 1 ∗ 2 0 = 3 0 * 2^2 + 1 * 2^1 + 1 * 2^0 = 3 022+121+120=3
因此,最终求出来的数字就是36.27

二进制转十六进制和二进制转八进制的方法一样,只不过这一次的分组是4位二进制数位一组

2.3.八进制/十六进制转二进制

这个其实也不难,先拿八进制转二进制来讲,一位八进制数对应转化为三位二进制数,举一个例子,将八进制数: ( 52.43 ) 8 (52.43)_8 (52.43)8转化位二进制数
s t e p 1 step1 step1:将八进制数的每一位转化为二进制数(直接用十进制转二进制的方法即可)
比如5转化为: ( 101 ) 2 (101)_2 (101)2,2转化为 ( 010 ) 2 (010)_2 (010)2,4转化为 ( 100 ) 2 (100)_2 (100)2,3转化为 ( 011 ) 2 (011)_2 (011)2
那么,最后得到的二进制数就是: ( 101010.100011 ) 2 (101010.100011)_2 (101010.100011)2

十六进制转二进制方法一样,只不过一位十六进制数对应转化为4为二进制数而已

2.4 二进制数转8421BCD码

8421BCD码是一种有权码,四位二进制数xxxx,从高位到低位的权重依次是8,4,2,1
那么,二进制数怎么转8421BCD码呢?
我们可以先将二进制数转成十进制数,在把十进制数的每一个位转成对应的8421BCD码
例子:将 ( 1101.1 ) 2 (1101.1)_2 (1101.1)2转成8421BCD码:
首先将1101.2转成十进制:是 ( 13.5 ) 10 (13.5)_{10} (13.5)10,那么我们就看13.5每一位对应的8421BCD码是啥:
1的8421码是0001,3的8421码是0011,5的8421码是0101,那么最终转化为8421BCD码就是:
( 00010011.0101 ) 2 (00010011.0101)_2 (00010011.0101)2

3. 二进制数的计算

3.1.加减乘除

这部分难度不大,它和十进制数的加减乘除非常类似,只不过二进制数的计算是逢2进1

3.2.反码和补码

二进制中,我们通常在二进制数的前面增加一个符号位来表达二进制数的正负,0表示正,1表示负

3.2.1反码,补码的求法

对于一个正的二进制数来说,它的原码 = 反码 = 补码
而对于负的二进制数,反码求法:符号位不变,数值位按取反
举个例子,对于二进制数:10011010,它的反码就是:11100101

对于负的二进制数,补码求法:反码+1(符号位不变)
还是刚刚的例子,它的补码位:11100110

3.2.2.关于符号的问题

当两个补码相加时,结果的符号位等于:原来加数的符号位之和 + 来自最高为有效数字的进位
我们来看个例子:1. 用二进制补码计算:13 - 10
s t e p 1 step1 step1:13的补码为:00001101,-10的补码为11110110
s t e p 2 step2 step2:相加: ( 0 ) 0 0 0 1 1 0 1 ( 1 ) 1 1 1 0 1 1 0 < 1 > { 1 } 0 0 0 0 0 1 1 begin{array}{cccccccc} (0) && 0 & 0 & 0 &1 & 1 & 0 & 1\ (1) && 1&1 & 1 &0&1&1&0\ hline <1>& {1}&0&0&0&0&0&1&1 end{array} (0)(1)<1>{1}010010010100110011101
其中,<1>表示原来两个补码符号位的和,{1}表示来自最高为有效数字的进位
因此,两个补码加和结果的符号位就是1 + 1 = 0,也就是正数

3.2.3.补码的意义

两个原码相减还是挺麻烦的,要比较两数的绝对值大小,选出大的那个当作被减数,再相减
而引入反码和补码,就是为了使用加法代替上述过程的减法

最后

以上就是等待小甜瓜为你收集整理的【数字电子技术 Digital Electronic Technology 1】——数制和码制 之 不同数制的转换以及二进制算术运算2. 不同数制之间的转换3. 二进制数的计算的全部内容,希望文章能够帮你解决【数字电子技术 Digital Electronic Technology 1】——数制和码制 之 不同数制的转换以及二进制算术运算2. 不同数制之间的转换3. 二进制数的计算所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(60)

评论列表共有 0 条评论

立即
投稿
返回
顶部