标签:
再写两句发现又好了,,,体验+1
我所认为的计算机的运算,无非就是“算数”,除了传统的加减乘除外,在二进制的表示下,还有逻辑运算与移位运算。
数值 | 原码 | 补码 | 补码左移1位 | 左移后值 | 补码右移1位 | 右移后值 |
---|---|---|---|---|---|---|
2 | 0010 | 0010 | 0100 | 4 | 0001 | 1 |
-2 | 1010 | 1110 | 1100 | -4 | 1111 | -1 |
还有一点,就是移位的固有影响
逻辑移位:
由于计算机引入了补码,目的就是为了统一了正负数的运算,所以加减乘除也就要在补码下讲,当然在原码下也同样可讲,,,
对于两个数值X,Y(我是说数值哦)
X值 | [X]补 | 加法 | Y值 | [Y]补 | 结果值 | [结果]补 |
---|---|---|---|---|---|---|
2 | 0010 | + | 1 | 0001 | 3 | 0011 |
-1 | 1111 | + | 2 | 0010 | 1 | 0001 |
X值 | [X]补 | 减法 | Y值 | [-Y]补 | 结果值 | [结果]补 |
---|---|---|---|---|---|---|
3 | 0011 | - | 1 | 1111 | 2 | 0010 |
2 | 0010 | - | -1 | 0001 | 3 | 0011 |
编码 | 一般意义下的值 | 视为补码下的值 | 视为原码下的值 |
---|---|---|---|
0.00 | 0 | 0 | 0 |
0.01 | 0.25 | 0.25 | 0.25 |
0.10 | 0.5 | 0.5 | 0.5 |
0.11 | 0.75 | 0.75 | 0.75 |
1.00 | 1 | -1 | -0 |
1.01 | 1.25 | -0.75 | -0.25 |
1.10 | 1.5 | -0.5 | -0.5 |
1.11 | 1.75 | -0.25 | -0.75 |
数值 | 一般编码 | 原码 | 补码 |
---|---|---|---|
0.25 | +0.01 | 0.01 | 0.01 |
-0.25 | -0.01 | 1.01 | 1.11 |
模运算
正文
yi-1 yi | yi - yi-1 | 操作 |
---|---|---|
0 0 | 0 | 加上0,然后右移一位 |
0 1 | 1 | 加上[X]补,然后右移一位 |
1 0 | -1 | 加上[-X]补,然后右移一位 |
1 1 | 0 | 加上0,然后右移一位 |
有办法吗?有的
以四位CRA(Carry Ripple Adder)为例
天哪终于写完了。有错误的地方望指正。
标签:
原文地址:http://blog.csdn.net/stringnewname/article/details/51372452