原码、补码其实很简单

来源:互联网 发布:佳能wifi软件app 编辑:程序博客网 时间:2024/06/09 21:01

算术运算中的数值都带有符号以表示正负
计算机中用0表示正,用1表示负
原来带有“+”、 “-”号的数据表示为真值
真值:x= +1011 y=-1011
机器数: x= 01011 y=11011

原码
二进制真值X的原码编码方法(n位)
 对最高位对符号部分进行编码
   用0表示’+’ ,用1表示’-’
 剩下的(n-1)位对数字部分进行编码
    编码与X的数字相同
  如果X的数字不足(n-1)位,则高位补0,补足至(n-1)位

0原码有2个
   +0 :0000..0
   -0 :1000..0
   
假设用8位的原码表示

table x y 真值数 +101 -1010 最高位处理 0 1 原码 00000101 10001010
优点
简单直观,容易理解
缺点
做加法和剑法运算较为复杂,要对符号位和数值的绝对值大小进行判断

原码转补码

符号部分同原码
   数的最高位为符号位,0表示证书,1表示为负数
数字部分与它的符号位相关
   对于正数,补码数字部分和原码数字部分相同   对于负数,补码数字部分是讲原码数字部分按位取反在加1

8位

真值 原码 补码 +1101 00001101 00001101 -1110 10001110 11110010 注 (正数补码原码一样) 负数符号位一样,数字部分取反+1

补码转原码

数字位取反+1(符号位除外)(针对于负数)
例如

补码11110010转原码 数字位按位取反+1
符号位不变
1 1110010 取反 等于= 0001101 在加1
         = 0001110 (次数得到原码的数字位)
//最终结果 把符号位加上
10001110 就是他的原码了


补码

性质:补码表示法可以建华加法运算,并且可以将减法变成加法

这里写图片描述

补码的运算

这里写图片描述
这里写图片描述
这里写图片描述

补码运算

符号位也参加运算
不用考虑符号位的进位问题

解释:因为R位 位模式的符号位产生进位的话,也就是超过R位了.这时候。我们以后没有位置来存放,进位的数了.所以可以直接丢弃,并不影响结果

这里写图片描述


乘法

这里写图片描述

乘法其实,可以也是加法
事实上指的都是被乘数的移位和相加

除法

这里写图片描述


拓展

3位位模式 2^3 =8

补码 数 000 +0 001 +1 010 +2 011 +3 100 -4 //取反+1 等于100 符号位为- 101 -3 110 -2 111 -1 101解释 101求原码 101 符号位是1 数字是01 取反+1 等于11 符号位为负数 也就是-11 等于-3 三位数模式表示的数 [-4,+3]

对于n位- 位模式来而言

他表示最小的数为:-2^(n-1),最大的数 +2^(n-1) -1
+起来是 2^n次方

0 0
原创粉丝点击