A. java里用Integer.parseInt()把負數的二進制轉化十進制會拋異常怎麼辦,有什麼辦法能轉化
Integer.parseInt(String s, int radix) 這個方法本身就不能轉負數,只能轉正數。如果你想轉換-1,那隻能是 Integer.parseInt("-1",2),同理,轉-123,只能 Integer.parseInt("-1111011",2),即在本身正數對應2進制之前加一個「-」號。
對於「已知一個負整數的二進制數,求這個數的十進制數」這類問題的話,那麼方法如下:
對字元串操作,取反碼,然後再按照上文所述方式轉換,就可以得到所求負數+1,再-1,就可以得到所求負數
記得給分呦,親~~~~
B. java如何把 int型負數轉換成 int型正數
Math.abs(數值表達式)是用來求數值的絕對值的
C. java中如何辨別11110000是表示正數還是負數
1、要看你什麼類型
因為你這個是八位的
如果是如果是byte來存儲的話 就是負數了
其他的話都是正數;
2、如果是int,int是32位
所以240的int二進制是前面24個0,然後11110000;
3、所有的語言都是這樣的 無論是C還是C++還是java。當然也有特殊情況,例如那個變數類型是不支持負數的,那就不是符號位了。
D. java 正數負數歸一化
(x+1000.0)/2000
E. java 將一個負數強轉成char會出現什麼結果呢
轉型被用來將一個數值從一種類型轉換到另一種類型。下面的程序連續使用了三個轉型。那麼它到底會列印出什麼呢?
public class Multicast{
public static void main (String[] args){
System.out.println((int)(char)(byte) -1);
}
}
無論你怎樣分析這個程序,都會感到很迷惑。它以int數值-1開始,然後從int轉型為byte,之後轉型為char,最後轉型回int。第一個轉型將數值從32位窄化到了8位,第二個轉型將數值從8位拓寬到了16位,最後一個轉型又將數值從16位拓寬回了32位。這個數值最終是回到了起點嗎?如果你運行該程序,你就會發現不是。它列印出來的是65535,但是這是為什麼呢?
該程序的行為緊密依賴於轉型的符號擴展行為。Java使用了基於2的補碼的二進制運算,因此int類型的數值-1的所有32位都是置位的。從int到byte的轉型是很簡單的,它執行了一個窄化原始類型轉化(narrowing primitive conversion),直接將除低8位之外的所有位全部砍掉。這樣做留下的是一個8位都被置位了的byte,它仍舊表示-1。
從byte到char的轉型稍微麻煩一點,因為byte是一個有符號類型,而char是一個無符號類型。在將一個整數類型轉換成另一個寬度更寬的整數類型時,通常是可以保持其數值的,但是卻不可能將一個負的byte數值表示成一個char。因此,從byte到char的轉換被認為不是一個拓寬原始類型的轉換,而是一個拓寬並窄化原始類型的轉換(widening and narrowing primitive conversion):byte被轉換成了int,而這個int又被轉換成了char。
所有這些聽起來有點復雜,幸運的是,有一條很簡單的規則能夠描述從較窄的整型轉換成較寬的整型時的符號擴展行為:如果最初的數值類型是有符號的,那麼就執行符號擴展;如果它是char,那麼不管它將要被轉換成什麼類型,都執行零擴展。了解這條規則可以使我們很容易地解決這個謎題。
因為byte是一個有符號的類型,所以在將byte數值-1轉換成char時,會發生符號擴展。作為結果的char數值的16個位就都被置位了,因此它等於216-1,即65535。從char到int的轉型也是一個拓寬原始類型轉換,所以這條規則告訴我們,它將執行零擴展而不是符號擴展。作為結果的int數值也就成了65535,這正是程序列印出的結果。
盡管這條簡單的規則描述了在有符號和無符號整型之間進行拓寬原始類型時的符號擴展行為,你最好還是不要編寫出依賴於它的程序。如果你正在執行一個轉型到char或從char轉型的拓寬原始類型轉換,並且這個char是僅有的無符號整型,那麼你最好將你的意圖明確地表達出來。
如果你在將一個char數值c轉型為一個寬度更寬的類型,並且你不希望有符號擴展,那麼為清晰表達意圖,可以考慮使用一個位掩碼,即使它並不是必需的:
int i = c & 0xffff;
或者,書寫一句注釋來描述轉換的行為:
int i = c; //不會執行符號擴展
如果你在將一個char數值c轉型為一個寬度更寬的整型,並且你希望有符號擴展,那麼就先將char轉型為一個short,它與char具有同樣的寬度,但是它是有符號的。在給出了這種細微的代碼之後,你應該也為它書寫一句注釋:
int i = (short) c; //轉型將引起符號擴展
如果你在將一個byte數值b轉型為一個char,並且你不希望有符號擴展,那麼你必須使用一個位掩碼來限制它。這是一種通用做法,所以不需要任何注釋:
char c = (char) (b & 0xff);
這個教訓很簡單:如果你通過觀察不能確定程序將要做什麼,那麼它做的就很有可能不是你想要的。要為明白清晰地表達你的意圖而努力。盡管有這么一條簡單的規則,描述了涉及有符號和無符號整型拓寬轉換的符號擴展行為,但是大多數程序員都不知道它。如果你的程序依賴於它,那麼你就應該把你的意圖表達清楚。
F. JAVA負數轉字元串,是怎麼轉的
1、假設我定義一個了一個數字 int a = -1;
2、String s = a+"";這樣a其實就變成了一個字元串,為什麼呢?
因為加號(+)在碰到字元串""的時候,會自動變成字元串連接符,這樣,它就把a和一個空的字元串連接起來,組成了一個新的字元串str,其實str的值就是"-1"。
不要用什麼toString()方法,用我那種方法更好哦,以後你在很多地方可以直接使用,很方便哈!
G. 如何快速的把程序里的 負數 變成 正數
在數據區域外的任一單元格輸入一個-1,復制-1,然後選擇該列需要轉換數據,「選擇性粘貼」為「運算」「乘」,即可快速進行負數轉正數。
H. java中怎麼產生一個負數到一個正數范圍內的隨機數
new Random(), double random.nextDouble() 范圍在0-1中間,random.nextDouble()*(正數-負數)+負數
I. java如何表示負數
int i = -1;望採納,你不想使用負號標示那就用2進制唄
J. java怎麼讓一個正數變成負數
要將負數轉換為正數(這稱為絕對值),請使用Math.abs()。 此Math.abs()方法的工作方式如下:「number = (number < 0 ? -number : number);」。
看一個完整的例子:
packagecom.mkyong;
publicclassapp{
publicstaticvoidmain(String[]args){
inttotal=1+1+1+1+(-1);
//output 3
System.out.print1n("Total:」+total);
inttotal2=1+1+1+1+Math.abs(-1);
//output5
System.out.print1n("Total2(absolutevalue):」+total2);
}
}
輸出量
Total:3
Total2(absolutevalue):5
在這種情況下,Math.abs(-1)會將負數1轉換為正數1。