[問題] 關於32bit記憶體的概念

看板C_and_CPP (C/C++)作者 (左)時間13年前 (2012/07/20 15:32), 編輯推噓1(213)
留言6則, 4人參與, 最新討論串1/1
#include<stdio.h> #include<stdlib.h> int main() {int j=0; int i=1; do { printf("%d\n",i); i*=2; j++; }while(j<33); system("pause"); return 0; } 最後印出來會是1,2,3,4.......1073741824,-2147483648, 0 ^第31次 ^第32次 第31次~是不是代表著全部位元都是 11111111 11111111 11111111 11111111 那他計算負數的方式為何會將第32位元也算入絕對值,第32位元不是只做正負 號的判斷嗎? 那如果平常打-2位元組是否為10000000 00000000 00000000 00000001 還是要取補數甚麼的? 第32次 為什麼會顯示0 跟overflow有關係嗎 應該不會進入下一段的記憶體吧 XD 硬體概念不好還請高手開導T.....T 謝謝 -- 這年頭沒真相沒得混 ORZ..... http://ppt.cc/S!iF -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.45.251.233

07/20 15:57, , 1F
是補數沒錯 那是二補數
07/20 15:57, 1F

07/20 16:03, , 2F
第31次 0x70000000 ->01反轉 再+1
07/20 16:03, 2F

07/20 16:04, , 3F
(就是一樓講的二補數)
07/20 16:04, 3F

07/20 16:04, , 4F
打錯 第31次 0x80000000
07/20 16:04, 4F

07/20 16:20, , 5F
不會有3
07/20 16:20, 5F

07/20 17:33, , 6F
無聊問題? so why did you post it?
07/20 17:33, 6F
文章代碼(AID): #1G2Gbulh (C_and_CPP)
文章代碼(AID): #1G2Gbulh (C_and_CPP)