大家好,我是一个新手,所以提的问题可能太弱智了一点,但请各位大牛详细指教一下,不胜感激。
众所周知,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';
各位大大留步指教一下关于溢出的问题。
- 写回答
- 好问题 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本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥50 寻找一位有逆向游戏盾sdk 应用程序经验的技术
- ¥15 请问有用MZmine处理 “Waters SYNAPT G2-Si QTOF质谱仪在MSE模式下采集的非靶向数据” 的分析教程吗
- ¥50 opencv4nodejs 如何安装
- ¥15 adb push异常 adb: error: 1409-byte write failed: Invalid argument
- ¥15 nginx反向代理获取ip,java获取真实ip
- ¥15 eda:门禁系统设计
- ¥50 如何使用js去调用vscode-js-debugger的方法去调试网页
- ¥15 376.1电表主站通信协议下发指令全被否认问题
- ¥15 物体双站RCS和其组成阵列后的双站RCS关系验证
- ¥15 复杂网络,变滞后传递熵,FDA