. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->标志寄存器
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  谁知道怎么快速算出补码的方法。。  [待解决] 回复[ 15次 ]   点击[ 924次 ]  
qq6162696
[帖 主]   [ 发表时间:2010-05-02 19:46 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:0
注册日期:2009-06-26 05:02
如题~~!
versaariel
[第1楼]   [ 回复时间:2010-05-06 15:55 ]   [引用]   [回复]   [ top ] 
荣誉值:62
信誉值:0
注册日期:2009-12-03 13:14
多练,多想
xianzq888
[第2楼]   [ 回复时间:2010-06-22 15:47 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:0
注册日期:2010-01-03 14:44
正数被码本身.负数被码为该正数补码按位取反+1
syc
[第3楼]   [ 回复时间:2010-06-28 23:06 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:1
注册日期:2010-06-14 18:42
最高位如果为1就是负数 取反加1之后就是该负数的绝对值
最高位如果是0则是该数本身
cxpbl
[第4楼]   [ 回复时间:2010-11-13 10:21 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-09-16 18:13
书最后有说明哈!
sempron
[第5楼]   [ 回复时间:2010-11-19 12:41 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-10-29 09:56
正如杀人最好的方法是用手枪而不是功夫一样,算补吗最快的方法当然是计算机了,下个特定的软件或win7自带的计算器都可以。但是你要知道补码的原理,这就够了,实在没必要自己动手算!
lihuan8460
[第6楼]   [ 回复时间:2010-12-03 21:16 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-12-03 12:38
呵呵!
lihuan8460
[第7楼]   [ 回复时间:2010-12-03 21:16 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-12-03 12:38
呵呵!呵呵!呵呵!呵呵!
donggs02
[第8楼]   [ 回复时间:2010-12-04 16:10 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-04-08 17:43
给你说个简单的方法 用电脑的计算器 点查看-科学型 然后用16进制 ,0-(你要求补码的数)=补码
  也可以 0-(补码)=补码所代表的数。  不信你是一是  呵呵
wang_ss
[第9楼]   [ 回复时间:2011-01-10 15:49 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:0
注册日期:2010-12-13 12:23
根据 donggs02整理出来的,非常感谢他提供如此便捷的方法

;求补码原码的方法
;正数的补码是本身,负数的补码是其绝对值取反后加1.
;求反的方法:假设待求反的数是N位的,那么用N位的最大值(2^N-1)减去这个数即可完成对其求反.
;如对1001求反:1111-1001=0110.
;由于求补码还要加上1,所以求某一负数a的补码可以用2^N-1 - a + 1 = 2^N - a = 0 -a,即补码 = 0 - 原码.
;同理可以得出求原码的方法:原码 = 0 - 补码.
masmaster
[第10楼]   [ 回复时间:2011-01-10 21:35 ]   [引用]   [回复]   [ top ] 
荣誉值:268
信誉值:12
注册日期:2010-06-18 22:19
neg
thiswys
[第11楼]   [ 回复时间:2011-02-25 21:30 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-02-25 14:56
正数补码 = 该正数
负数补码 = 可以表示的最大正数-该数绝对值+1,符号不变
其实就是求mod运算

比如8位有符号数,最大为127(2^7-1)= FFh = 1111111B
求-65的补数:
十进制求法:127-65+1=63,补码为-63
十六进制求法:FFh-41h+1h=BFh
二进制求法:1,1111111-0,1000001+1=1,0111110+1=1,0111111;或者除符号位每位求反再加一
xy26333
[第12楼]   [ 回复时间:2011-06-20 10:16 ]   [引用]   [回复]   [ top ] 
荣誉值:16
信誉值:16
注册日期:2010-04-02 01:09
若数据不溢出
则:无符号运算得数=有符号运算得数
利用这点:-65=0-65=100H(cf借1)-41H=BFH
-130=0-130=10000H-82H=FF7EH(不能让数据溢出)
feixia
[第13楼]   [ 回复时间:2011-07-08 00:54 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-05-03 16:34
扫描法。。。二进制数据,(负数)从最后一位开始遇到0不变遇到的第一个1不变然后其他按位取反
eg:原码  10000101010100000
扫描 为   11111010101100000
(符号位不变)
z0813462
[第14楼]   [ 回复时间:2011-08-30 23:30 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-08-30 22:20
用计算器或工具,最快  - -
xcf0631
[第15楼]   [ 回复时间:2013-06-17 19:23 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2013-06-11 13:26
正数如:0001 1100=>16+8+4=28

负数: 1000 1111 =>0000 1111 + 1000 0000=15 + (-128)=-113
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved