byte是1個位元組 所以(位元組型,佔1 位元組,表示8 位正整數,範圍0 ~ 255)int是4個位元組 而把int轉換成byte會擷取最後乙個位元組
比如你說的135 轉為2進製應該有4個位元組 然後僅僅要最後乙個位元組
最後乙個位元組的第一位被作為符號位135轉換2進製後為10000111
然後按照 補碼 計算規則看一下
把除了符號位之外 取反加1 變成11111001 這結果是-121
用256 減去 你所轉換的數的絕對值 ,然後,加個符號(和做轉換數相反的),就是結果????????
我算出來應該是-28156=10011100b 轉換為byte為11100b=-28
問題補充:
156=10011100b 最高位為符號位 而11100b=28 故為-28由於1byte為8bit
所以轉換為byte,符號位被丟棄(n個0也被丟棄),
結果為1 0011100b(此時,第一位符號位為1,為負),
由於負數按補碼儲存,所以轉換為byte之後的真值為1 1100100(由補碼求原碼,按位取反末位加1),即-100
**********====
lz前面都算對了,就差最後由負數的補碼求真值,因為負數按補碼儲存,所以最後一步很關鍵
如 byte c1 = 46;byte c2 = 95;
byte c3 = (byte)(c1 + c2);
system.out.println("c3=" + c3);
輸出結果為什麼是 負100 老師說是int4個位元組byte是乙個位元組去掉三個位元組,餘下哪個位元組是多少就是多少。可是哪三個位元組是怎麼去的呢
/*95+46=141
(00000000 00000000 00000000 ) 10001101
128 8 4 1
byte max is 127.
the first "1" is mark,so "10001101" is complement code.
get:01110010
=64 +32+ 16 +2=(-)114
at subtraction 1
=-115
數字String轉換成int
最近在將數字字串轉int時,經常忘記integer.parseint 和這個integer.valueof 看下面 1.string轉int int num integer.valueof 12 int num2 integer.parseint 12 兩個方法的區別 integer.valueof...
ArrayList轉換成int 陣列
1.為什麼有這個問題?因為arraylist的toarray無法對int生效 2.為什麼無法對int生效?因為int不是物件,所以不是object的子類,只是基本的資料型別 3.那麼如何轉換成int 陣列 可以直接轉為integer 陣列。list list newarraylist int siz...
數字轉換成漢字
我們通過追加的方式來實現,考慮到我們的數字是四四分組的,所以我們要先實現四位數正確轉換,上述問題解決之後,再列印四位以上數字時,我們就可以通過追加的方式解決五位以上數 萬 字的追加,同時此程式只能對千萬級別以內的數字進行轉換。public class test02 else if i percent...