注册 登录
编程论坛 汇编论坛

关于寄存器的无符号,有符号

小兵打将 发布于 2011-09-10 17:02, 491 次点击
比如通用寄存器AX,8086的,,一共有16位,请问最高位是符号位吗?还是默认为无符号的,,还有ah,al也是最高位默认为符号位吗
3 回复
#2
ganbikai2011-09-10 20:31
我只看到第10章了 我理解的是    不管他是多少位   放在计算器里  然后变成2进制 看他第7位是0还是1  是1 就是有符号数 则需要转换  转换过后 他是负数
           是0  则不用转换  他就是绝对值位移
#3
zklhp2011-09-10 22:01
可以这么说 计算机里根本就没有无符号数和有符号数

为啥这么说呢 因为计算机不会自己判断数是啥类型 它只是执行人的代码 也就是 你命令它把数当成无符号计算机就照做 你命令它把数当成有符号数计算机也照做

这样说了 我觉得你的问题应该是解决了

也可以这么说 有符号数和无符号数没有本质区别 10010101B 你说它是无符号数还是有符号数? 不知道 你当它是无符号数它就是无符号数 你当它是有符号数它就有符号数

只看数本身无法判断是不是有符号数 看内存变量也没法 寄存器也没法 因为AX BX 你说存的是无符号数还是有符号数? 看不出来罢

决定的是指令 换句话说是程序写作者的意志 也就是 一个数 虽然根据情况是无符号数 可是 某人错误的写成了adc 嘿嘿 计算机也照做。。。

够明白了罢
#4
hax0r2011-09-12 18:32

计算机是抽象的,人类则是感性的,机器只按它的理解,人类则多种理解。
eax=0x8ffffeeee ,计算机认识它是一个数,人类则可以理解成两个数,一个
正数一个负数。事实上,计算机科学家并没有打算把硬件设计成识别正数和
负数,相反把他们设计成一个数,补数或叫补码。这种好处是一个补数可以
代表一个正数,也可以涵盖两个正负数。
不同的正负数在计算机中用不同的符号表示(比如HSB是0为正1为负)都设过,
不过最终计算机科学家把一个数正负的不同理解从硬件识别转移到了人类识
别。
1