. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->基础知识
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  基础知识3 -补码快速转换法  [待解决] 回复[ 1次 ]   点击[ 316次 ]  
zhenglxd
[帖 主]   [ 发表时间:2009-06-03 09:46 ]   [引用]   [回复]   [ top ] 
荣誉值:30
信誉值:0
注册日期:2009-04-09 10:05
这个是我自己总结的,如果你还不知道补码是什么,那么请你去看我写的基础知识2

好那么怎么快速转换补码呢?我们每次把一个数值转化成 0,1 然后进行转换其实我们完全可以忽略这个过程 用一个公式来推导
ps:不知道我是不是第一个发现的啊。。我觉得也不可能把。。
首先 对于 一个8位二进制数而言
任何 0开头的 二进制信息 都是正的
任何 1开头的 二进制信息 都是负的
这代表 对于一个8位的二进制数
他的正数范围是 0~01111111
负数范围是10000000~1111111
也就是正数实际值是0~127
负数实际值是     128~255
正数的逻辑值是他本身
而负数的逻辑值是 -128~-1


8位的有效范围 是-128~127
对于大于 127 的数字 X
他的补码表示数值为-(256-X)
对于小于0的数字 X
他的补码表示数值为 256+(x)

例如
mov al,10H 
al=16

add al,90H 
al=90h=144 144>127 所以他表示的数值为-(256-144)
=-112

16+ -112=-96
-96的补码形式是 256+(-96)=160
由于160>128所以他表示的实际数值为 - (256-160)

对于128 他的二进制信息是以1 开头 所以 他的逻辑值是个负数
但是 他本是也可以表示无符号数的128,这个是他实际值是128
在8位中 128的逻辑值就是 -128 

再如255 他的二进制信息也是以1开头 所以他的逻辑值也是个负数
但是但是 他本是也可以表示无符号数的255,这个是他实际值是255
在8位中 255的逻辑值就是 -1

当你看到内存中一个内存单元的数据的时候 如果他是 字节型数据的话 那么大于127的数字就都是负数的,想知道他的 逻辑值 可以用 -(256-X)的公式

如果是一个字型数据的话 这个我暂时不发表 对于基础谈到这里足够 剩下的让大家自己去探索吧!
rhq2009
[第1楼]   [ 回复时间:2009-06-07 18:34 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-05-28 12:55
负的都大于127因为前面有个1
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved