您的位置:首页 > 其它

数字逻辑的一些基本运算和概念

2016-09-09 16:46 411 查看

进制转换


基数:计数制中所用到的数字符号的个数,比如基数为R的计数制中,含0,1···R-1共R个数字符号,进位规律是“逢R进1”,称为R进制。

位权:在一种进位计数制表示的数中,用来表明不同数位上数值大小的一个固定的常数。不同数位有不同的位权。

比如2进制:10001,第一个1位上的位权为 2^4,第二个1位上的位权为 2^0。



并列表示法:比如 1001001.

多项式表示法:按权展开:1 x 2^6 + 1 x 2^3 + 1 x 2^0.


二转十


10110.101 = 1x2^4 + 1x2^2 + 1x2^1 + 1x2^-1 + 1x2^-3 = 16 + 4 + 2 + 0.5 + 0.125.


十转二


整数转换,除基数取余法:


45 ÷ 2 = 22 ··· 1
22 ÷ 2 = 11 ··· 0
11 ÷ 2 = 5 ··· 1
5 ÷ 2 = 2 ··· 1
2 ÷ 2 = 1 ··· 0
1 ÷ 2 = 0 ··· 1

得到45的二进制 1 0 1 1 0 1,注意,按照从下往上的顺序。


小数转换,乘二取整法:


0.6875
x    2
------
1.3750 ··· 1
x    2
------
0.7500 ··· 0
x    2
------
1.5000 ··· 1
x    2
------
1.0000 ··· 1

0.6875的二进制 0.1011,注意,按照从上向下的顺序。


有些时候,无法用有限位二进制表示十进制的小数,就要根据题目的精度要求,将最低位进一然后舍去。



此外,当一个十进制既有整数也有小数,只要把它们分开计算就好了。



八进制,和十六进制,类比即可。需要注意的是:

八转二的时候,每一位八进制数 用三位二进制表示即可,比如 732 -> 111 011 010;十六转二用4位二进制数即可。

二转八的时候,不足补0,比如 二进制 1001 需要看做 001 001 再转成 11。

二转十六的时候,数字十到十五需要用 A - E 表示。


原码,补码,反码


计算机涉及数字的符号问题的时候,需要补充一位符号位,一般在二进制数的最左边,以1为负,以0为正。


原码:


小数:

大于0的小数X,原码为其本身;小于0的小数X,原码为 1-X(相当于在小数点前面补1)。比如:0.1011 -> 0.1011;-0.1011 -> 1.1011

整数:

大于0为它本身,或者在最高位前面补0;小于0在最高位的前面补1。比如:1101 -> 01101;-1101 -> 11101。


反码:


正数的反码为它本身;负数的反码:符号位不变,其他位按位取反。比如:0101111 -> 0101111;1101111 -> 1010000.

整数的方法和小数的方法一样,只不过小数多加了一步,将符号变成小数点前面的1.


补码:


正数与原码,补码一样;负数为取反码之后在最低位+1,有进位则进位;小数和整数一样。


补码反码的计算:

反码的计算


无论进行加还是减的运算,均可以通过加法实现。运算的时候,符号位一起参与计算。

当符号位发生进位的时候,需要将进位加到运算结果的最低位,才能得到结果。


111
+ 111
-----
1 110
--->1
-----
111

补码的计算


与反码的计算不一样的地方在于,符号位发生进位的时候,将其丢弃。


111
+ 111
-----
1 110
->Drop
-----
110

几种常用的BCD编码


目的:为了满足计算机使用二进制,而同时满足人们习惯十进制的需求,通常用四位二进制代码对十进制数字进行编码。称为 二-十进制代码。

又称BCD码,具有二进制的形式,又有十进制的特点。



十进制有 0-9 十个数字,就需要四位二进制来表示,一共 2^4 = 16种表示,就会有多余的六个二进制表示。

不管哪种方案都会有多余的六个表示。



分为有权码 和 无权码,有权码是用数字表示的名字,比如8421码,8421就是它的权值。


8421


权:8421;按照最简单的二进制进位来表示。


0 0000
1 0001
2 0010
3 0011
4 0100
------
5 0101
6 0110
7 0111
8 1000
9 1001

多余的无效码:1010 -> 1111


转换样例:

(1)258 -> 0010 0101 1000 注意,十进制的每一位都要用四位二进制表示,并且不能舍去0!

(2)0001 0010 0000 1000 -> 1208 按权转换,相加即可,比如 0010 = 8x0 + 4x0 + 2x1 + 1x0,就是BCD码的名字。



如果在计算的过程中,出现了无效位,需要加6(0110)来得到正确的结果。


2421


权:2421;求法:0-4和8421一致,从5开始(比如取到了k,5<=k<=9),计算 9-k 的值,得到 9-k 的2421表示(和8421一样),然后按位取反。

比如 求6的2421码:9 - 6 = 3;3的2421码 和 3的8421码一样 = 0011;按位取反 = 1100.

因此,2421码是 对9的自补代码。


0 0000
1 0001
2 0010
3 0011
4 0100
------
5 1011
6 1100
7 1101
8 1110
9 1111

多余的无效码:0101 -> 1010


转换样例:

(1)258 -> 0010 1011 1110

(2)0010 0001 1110 1011 -> 2 1 8 5

0010 = 2x0 + 4x0 + 2x1 + 1x0;1110 = 2x1 + 4x1 + 2x1 + 1x0


5421


权:5421;求法:前面五个 0-4 一样,最后五个,最高位取1,其它三位搬下来。

比如 求5:5找0,0的表示为 0000,那么最高位置1,其它三位搬0000的后三位,形成 1000,就是5的5421码了。


0 0000
1 0001
2 0010
3 0011
4 0100
------
5 1000
6 1001
7 1010
8 1011
9 1100

多余的无效码:0101 -> 0111(3个);1101 -> 1111(3个)


转换样例:

(1)258 -> 0010 1000 1011

(2)0010 0001 1100 1011 -> 2 1 9 8

0010 = 5x0 + 4x0 + 2x1 + 1x0;1100 = 5x1 + 4x1 + 2x0 + 1x0


无权码:余3码


就是8421码+3。它也是对9的自补代码。


0 0011
1 0100
2 0101
3 0110
4 0111
------
5 1000
6 1001
7 1010
8 1011
9 1100

多余的无效码:0000 -> 0010;1101 -> 1111


转换样例:

(1)258 -> 0101 1000 1011

(2)1000 1001 1001 1011 -> 5 6 6 8

1000 = 8x1 + 4x0 + 2x0 + 1x0 - 3 = 5;1001 = 8x1 + 4x0 + 2x0 + 1x1 - 3 = 6



注意,如果计算没有涉及到进位,则需要-3,如果涉及到进位,则要先按照8421码的更改+6 然后再-3,也就是 +3。



2016/9/9

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: