int 轉換成byte 數字

2021-05-24 08:20:53 字數 1167 閱讀 3341

byte是1個位元組 所以(位元組型,佔1 位元組,表示8 位正整數,範圍0 ~ 255)  

int是4個位元組 而把int轉換成byte會擷取最後乙個位元組

比如你說的135 轉為2進製應該有4個位元組 然後僅僅要最後乙個位元組

最後乙個位元組的第一位被作為符號位135轉換2進製後為10000111

然後按照 補碼 計算規則看一下

把除了符號位之外 取反加1 變成11111001 這結果是-121

用256 減去 你所轉換的數的絕對值 ,然後,加個符號(和做轉換數相反的),就是結果????????

我算出來應該是-28

156=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...