小生也是前段时间 才开始学习汇编的,如果描述的有错误。还请海涵哈!
之前我的这篇文件介绍的一种方法:http://blog.jsx8.com/huibian/25.html ,这种方法是正确的,但是他不是一句完整的话!
这个怎么说呢? 也就是说如果只是单纯的通过八位数的最高位的数字来判断正负,其实是错的,但是为什么说他又是对的呢?请听我慢慢道来!
首先我先给大家举一个例子吧,
1000 0001 和1000 0001
咱们吧第一个看成有符号位,也就是第八位1是负数, 然后再吧第二个看成无符号位,也就是他没有符号位了。
那么第一个的运算结果就是:-1111110 +1 =-(126+1)=-127 (这里为什么要加1,这是因为机器要补码,什么是补码,请继续在我的博客搜索!),也就是说如果吧第一个看成有符号位,那么正在表达数值的就是后面七位数! 那么有符号位的二进制所能表达的范围就是:-128~127。
我们继续看第二个:他是没有符号位的! 那么我就按照正常的来算即可。10000001=129 也就是没有符号位,那么我们就要吧八个数全部算进去,而有符号位的符号位不能加进去算! 无符号为的所能表达范围为:0~255
有符号和没有符号所能表达的范围都是一样的,都是256个值,但是有符号能从负128到正127 ,没有符号则不能表达负数,
下一篇介绍如何让机器了解我们输入的是正还是负
本文章转载自五度博客:http://blog.jsx8.com