byte最大值最小值的问题
為什么會有反碼和補碼
??計算機實際上只有加法運算,其他運算都是在底層轉變,最終以加法的形式進行處理。
反碼,補碼都是為了簡化減法而生成的概念,反碼就是將減號轉化成負數(正數的反碼是他本身,負數的反碼是對其原碼部分逐位取反,符號位不變);正數的補碼與其原碼相同,負數的補碼是在其反碼的末位加1(為什么加1,我也不清楚,但是定義就是這樣)。
??計算機在計算的時候都是采用的補碼進行運算,得到結果后在轉化成原碼。
????1. 加法運算
?????10+15=00001010+00001111=00011001
?????00011001轉化為原碼后為:00011001 即25
????1. 減法運算
?????10-15=00001010+11110001=11111011
?????11111011轉化為原碼后為:10000101 即-5
接下來就進入正題
??byte是兩字節8位,所以用二進制表示
??最大值為:01111111
??等比公式:首項是a1,公比是q(q≠1),則Sn=a1(1-q^n)/(1-q)
??結果為:20+21+22+23+24+25+26=20(1-27/1-2)=27-1=127
??最小值為:11111111
?? 結果為:-127
問題
這時候問題就來了,對應不上了啊,負數的最小值是-128,經過計算明明是-127,問題出在哪里呢?
??因為最高位是符號位不算在里面,所以就會有兩個0,但是從一開始發明二進制的時候,就把-0規定為-128。
??現在也能解釋負數補碼為什么會加1了,加的就是-0這一位。
遇見就是緣分,點個贊再走哈
總結
以上是生活随笔為你收集整理的byte最大值最小值的问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 求集合中最大值、最小值、和
- 下一篇: 数组最大值和最小值的求法