jake300687 2015-12-28 04:04 采纳率: 66.7%
浏览 1385
已采纳

各位大大留步指教一下关于溢出的问题。

大家好,我是一个新手,所以提的问题可能太弱智了一点,但请各位大牛详细指教一下,不胜感激。
众所周知,F(此处16个F)=-1 ,
我也知道这是补码。然后首先我编写一个十六进制转化为十进制的程序,
然后F(此处16个F)=-1,我知道这是溢出了。但是就是不知道程序(DOS)在运算过程中溢出部分怎么运算来的。
溢出后为什么就等于-1,这个-1是怎么来的,这点想不明白。为什么F(此处16个F)=-1,为什么F...E(此处15个F最后一个E)=-2
下面是方法,还有一些上面的代码我就不打了,免得大家看的眼花缭乱。
//方法A用于将十六进制字符转化为十进制。
public static long 方法A(String hex){
long dicimal = 0;
for(int i=0;i char hexChar = hex.charAt(i);
//确定某一个字符
dicimal =dicimal*16+方法B(hexChar);
//依次乘并得到十进制数。
}
return dicimal;
}
//方法B确定字符。
public static long 方法B(char ch){
if(ch>='A'&&ch<='F')
return 10+ch-'A';
else
return ch-'0';

  • 写回答

2条回答 默认 最新

  • threenewbee 2015-12-28 04:11
    关注

    为了简单起见,我们用4位表示一个有符号整数。表示范围是-8~7
    如下
    0000 0
    0001 1
    0010 2
    0011 3
    0100 4
    0101 5
    0110 6
    0111 7
    1000 -8
    1001 -7
    1010 -6
    1011 -5
    1100 -4
    1101 -3
    1110 -2
    1111 -1
    我们也可以这么排列

    1000 -8
    1001 -7
    1010 -6
    1011 -5
    1100 -4
    1101 -3
    1110 -2
    1111 -1
    0000 0
    0001 1
    0010 2
    0011 3
    0100 4
    0101 5
    0110 6
    0111 7

    这么排列看的很清楚,为什么-1=1111?如果你把0看成是(1)0000的时候,那么它-1正好是(0)1111。括号中的1相当于借位。
    -2呢?那就是10000-2=01110

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 调用函数时,无关变量的改变引起函数值的改变
  • ¥15 xy坐标转化为经纬度坐标
  • ¥15 一般三角模糊数的上界值和下届值取中值的多少比较合理?
  • ¥15 关于#python#的问题,请各位专家解答!
  • ¥20 Hbase启动失败,无法启动HMaster
  • ¥15 sqpingboot在父模块已经引入了mybatisplus 在子组件不写版本号还是报错
  • ¥20 Lumerical FDTD solutions 中模型的相对阻抗,有效介电常数和有效磁导率的实部和虚部的数据如何获得?
  • ¥100 sql reporting service 远程smtp服务器配置支持
  • ¥15 ppyoloe_r带角度目标检测,loss_cls没法收敛
  • ¥15 淘宝交易指数如何解读,其关联的数据指标是什么