注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

兴趣是最好的老师

天才,就是强烈的兴趣和顽强的入迷。--木村久一

 
 
 

日志

 
 
关于我

郎补俄,中学正高级(教授)职称。中学特级教师。全国优秀教师,全国十佳班主任。教育硕士学位。原中国管理科学研究院特约研究员,兼任内蒙古师大教育硕士论文评阅专家、答辩委员会委员。内蒙古第七届、第九届特级教师评选委员会 委员。所教学生有一千多人考上大学,其中三十多人出类拔萃。有突出的班主任工作专长。推出课堂学习兴趣与班主任原理两项创新理论。代表著作《揭开学习兴趣与班主任工作规律的奥秘》。

网易考拉推荐

补码的运算  

2017-09-13 13:47:28|  分类: 趣味数学 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
本文转载自千里马《补码的运算》

整数补码
求给定数值的补码分以下两种情况:

补码正数

正整数的补码是其二进制表示,与原码相同[2]  。
【例1】+9的补码是00001001。(备注:这个+9的补码是用8位2进制来表示的,补码表示方式很多,还有16位二进制补码表示形式,以及32位二进制补码表示形式,64位进制补码表示形式等。每一种补码表示形式都只能表示有限的数字。)

补码负数

求负整数的补码,将其对应正数二进制表示所有位取反(包括符号位,0变1,1变0)后加1[2]  。
同一个数字在不同的补码表示形式中是不同的。比如-15的补码,在8位二进制中是11110001,然而在16位二进制补码表示中,就是1111111111110001。以下都使用8位2进制来表示。
【例2】求-5的补码。
-5对应正数5(00000101)→所有位取反(11111010)→加1(11111011)
所以-5的补码是11111011。
【例3】数0的补码表示是唯一的。
[+0]补=[+0]反=[+0]原=00000000
[ -0]补=11111111+1=00000000

补码转化为原码

已知一个数的补码,求原码的操作其实就是对该补码再求补码:
⑴如果补码的符号位为“0”,表示是一个正数,其原码就是补码。
⑵如果补码的符号位为“1”,表示是一个负数,那么求给定的这个补码的补码就是要求的原码。
【例4】已知一个补码为11111001,则原码是10000111(-7)。
因为符号位为“1”,表示是一个负数,所以该位不变,仍为“1”。
其余七位1111001取反后为0000110;
再加1,所以是10000111。

补码补码的绝对值

【例5】-65的补码是10111111
若直接将10111111转换成十进制,发现结果并不是-65,而是191。
事实上,在计算机内,如果是一个二进制数,其最左边的位是1,则我们可以判定它为负数,并且是用补码表示。
若要得到一个负二进制补码的数值,只要对补码全部取反并加1,就可得到其数值。
如:二进制值:10111111(-65的补码)
各位取反:01000000
加1:01000001(+65)

补码小数补码求法


-0.0101为负数,补码为1.1011.
一种简单的方式,符号位保持1不变,数值位从右边数第一个1及其右边的0保持不变,左边按位取反。
另外一种方法,数值位按位取反,末位加1,符号位保持不变.

因为补码的引进就是为了解决机器上减法运算不便的,思想是使符号位参与运算,即用补码表示的负数进行加法运算就相当于减去了这个数.而加上一个正数就是加上了一个正数

代数加减运算

补码补码加法

[X+Y]补 = [X]补 + [Y]补
【例6】X=+0110011,Y=-0101001,求[X+Y]补
[X]补=00110011 [Y]补=11010111
[X+Y]补 = [X]补 + [Y]补 = 00110011+11010111=00001010
注:因为计算机中运算器的位长是固定的(定长运算),上述运算中产生的最高位进位将丢掉,所以结果不是100001010,而是00001010,。

补码补码减法

[X-Y]补 = [X]补 - [Y]补 = [X]补 + [-Y]补【1】
【例7】1-1 [十进制]
1的原码00000001 转换成补码:00000001
-1的原码10000001 转换成补码:11111111
1+(-1)=0
00000001+11111111=00000000
00000000转换成十进制为0
0=0所以运算正确。
【例8增】-7-(-10) [十进制]
改为加法形式:-7-(-10)=-7+(-(-10))
-7的补码:11111001
-(-10)的补码:-10的原码为10001010,-(-10)的原码为00001010,
-(-10)的补码就是其原码,为00001010
-7 - (-10)= -7 + 10 = 3
11111001+00001010 = 00000011
转换成十进制为3

补码补码乘法

补码的乘法不具备【X*Y】补=【X】补×【Y】补的性质。但是【X*Y】补==【X】补×Y,所得结果再取补码,
如x=101,y=011,[x*y]补=-[(-101)*011]=-[011*011]=-01001=10111
其中,若【Y】补=y31y30……y0,则 Y=-y31*2^31+y30*2^30+……+y0*2^0

  评论这张
 
阅读(12)| 评论(0)
推荐

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017