以8位元為例 10010100 =(-108) 最左位元為1代表負數,從右往左找出右邊第一個1,其左邊的位元皆反轉,即二的補數
01101100 =(+108)
先init 一個2^15~2^0的陣列 two[0..15] = { 32768, ..... 2,1 }
讀入字串 s[0..15]
若s[0]=='1'則用補數的方法,從s[15]往左找出第一個'1' ,假設是第 i 個
ans = two[i];
接著 for( j=i-1 ~ 0 ) 若 s[j]=='0'則 ans += two[j];
否則 就是正數,直接求出其十進位值 for(i=0~15) 若s[i]=='1'則 ans+=two[i]
昨天記憶體限制 64MB ,AC了,但今天改為 8MB,變成 RE
應該要改 I/O吧,另找時間試試!?