close
標題:

請問-12345怎麼轉換為有正號二進位?

發問:

請問各位大大如何將-12345轉換為有正號二進位? 煩請協助解答,謝謝! 更新: TO A TK UE 2AEO OR UFO : 我只是想知道有證號是什麼,還有像阿明他的回答 BUT我還是不清楚 正數十進 12345 正二進碼怎麼算成 0011 0000 0011 1001 不是先轉成1的補數之後再+1? 一整個阿雜~~~~= =" 不好意思~我是幼幼班的,真的很想知道為什麼?

最佳解答:

aa.jpg

 

此文章來自奇摩知識+如有不便請留言告知

在 C 語言裡,-12345 本身就是有號二進位整數了,你要問的是什麼? 2014-09-19 21:18:13 補充: /* 在 C 語言裡,-12345 本身就是有號二進位整數了,你要問的是什麼? 如果你要問的是如以二進位格式顯示在螢幕上的話,可以這樣做: */ #include void print_int_in_bin_format(int val) { static const unsigned mask = 1 << ( 8*sizeof(int) - 1 ); unsigned uval = val; unsigned bits = 8*sizeof(int); while( bits-- ) { printf("%c", (( uval & mask )?( '1' ):( '0' ))); uval <<= 1; } printf(" "); } int main(void) { print_int_in_bin_format(1); print_int_in_bin_format(2); print_int_in_bin_format(3); print_int_in_bin_format(-1); print_int_in_bin_format(-2); print_int_in_bin_format(-3); print_int_in_bin_format(-12345); return 0; } 2014-09-20 23:44:40 補充: 關於二進位碼,任何資料在數位電腦裡本來就是以二進位的型態儲存,包括你的 12345。所以我並沒有將 12345 轉換成二進位,因為他本來就是二進位的,我只是把他顯示出來而已。 接下來解釋有號無號整數,但是在接下去之前,您一定要瞭解二進位;若您不明白二進位的話,以下都是白說,請回去重讀電子計算機概論。 你不需要會手算轉換二進位與十進位,但要知道他的原理,會按計算機或其他軟體工具轉換這些數字。 先測試你一下: 2 的二進位表示為:10 3 的二進位表示為:11 4 的二進位表示為:100 如果以上三例你不明白的話,請跳過下面回去重修。 2014-09-20 23:44:57 補充: 經由以上範例我們知道,基本上光靠幾個位元我們就可以記錄一個正整數,這是沒問題的;但是負數呢?一個負數該如何表示? 後來人們想到了表達負數的二進位儲存法,我們就把用可以表達負數的整數記錄稱為有號整數,這個號是指正負號的號;至於原來不能表達負數的記錄就被稱為無號整數。 一開始,有號整數的最高位元用來表達正負號,0 為正;1 為負。 假設一個整數使用 4 個位元來表示,則示例: 1 : 0001 2 : 0010 3 : 0011 -1 : 1001; 1001 如果當作無號整數來解析就變成 9 -2 : 1010; 當作無號整數會變成 10 -3 : 1011; 當作無號整數會變成 11 2014-09-20 23:45:23 補充: 這樣的表示法雖然對人來說很直覺,但對於電腦來說卻比較不容易計算,所有的計算都要先檢查這個數是正的還是負的,然後再帶入不同的計算程序。 最後人類發現使用二補數來記錄負數可以大大簡化電腦的運算,也就是負的 X 就是正 X 的二補數。 二補數的算法在意見區有人說明了,上面六例用二補數表達法記錄就會變成: 1 : 0001 2 : 0010 3 : 0011 -1 : 1111; 當作無號整數會變成 15 -2 : 1110; 當作無號整數會變成 14 -3 : 1101; 當作無號整數會變成 13 2014-09-20 23:45:52 補充: 二補數的奇妙之處在於: 1. X 的二補數的再二補數會變成原來的 X,合理 -(-X) = X。 2. 數字計算不用再分兩調路線,可以用同一個算法來混和計算正負號數字,而這一點也是最重要的一點。 2014-09-20 23:46:07 補充: 對於二補數的第二個優點,以下用一個範例來解釋: -2 + 3 -> 1110 + 0011 -> 10001,但是我們的一個整數只有 4 個 bits,所以最前面那個 1 會被捨去。 -> 0001 -> 1 2014-09-20 23:47:40 補充: 你還可以再試試減、乘、除;但如果不是使用二補數表達負數,而是使用第一種記錄法,你可以自己思考要如何計算: -2 + 3 -1 - 4 2 + 3 這樣,你明白正數和負數在記憶體是怎麼表示的了嗎?明白為什麼近代電腦要使用二補數來表達負數了嗎? 2014-09-21 09:58:39 補充: 因為用二補數來表達負數的話,在正負數混合計算中使用的是同樣一個計算方法,不用去分辨正數或或負數,這點對於硬體電路設計而言尤為重要。 我不是都解釋過了?

其他解答:

我知道正為0負數為1,看最左邊的位元。應該是這樣.. 但不明白為什麼近代電腦要使用二補數來表達負數了嗎? 其實我是做人機圖控,最近在看OMRON想把這方面的概念搞懂? 2014-09-21 10:24:35 補充: 很抱歉我沒有看到你之後補充的內容是我的疏忽... 之前的計概是自己看的,學得不好... 我會再加油,感謝你辛苦的解答..|||||電腦正負號的整數是用二進碼的二補數(2's complement )來表示, 正數十進 12345 正二進碼 0011 0000 0011 1001 負數十進 -12345 負二進碼 1100 1111 1100 0111 把二進碼正數轉負數,二進碼數字反相後,結果再加一,二進螞二補數(負數二進碼)FBEFE3C2E0474026
arrow
arrow

    ceui4w8 發表在 痞客邦 留言(0) 人氣()