程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> java-各位大大留步指教一下關於溢出的問題。

java-各位大大留步指教一下關於溢出的問題。

編輯:編程綜合問答
各位大大留步指教一下關於溢出的問題。

大家好,我是一個新手,所以提的問題可能太弱智了一點,但請各位大牛詳細指教一下,不勝感激。
眾所周知,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';

最佳回答:


為了簡單起見,我們用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

caozhy
qq_26946497
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved