如何在C++裡面寫一個程式,去得知 int 宣告整數時,是用幾bits來儲存
正的(2^31-1)再+1的話…
就會輪回(2^-31),變成負號的整數了
所以說C++的整數是用32bits來儲存變數的
也就是說,你宣告一下 int 變數
想一個方式,把它從 1 一直加 1
直到他變成負的
看變成負的之前,也就是最大的正整數是多少
最大的正整數可以=2^□-1
□裡的幾次方再加 1,就是所使用的bits了
還有....
如果會matlab的話也幫一下小弟我
2006-10-09 18:05:42 · 3 個解答 · 發問者 Anonymous in 電腦與網際網路 ➔ 程式設計
整數型別共可表示 2^16=65536個整數值(個數),所以整數的範圍在 -32768-32767(值)之間。先從一個 bit(位元)來看,1 bit 可以表示 0 及 1,所以共可表達兩個數。2 bits可以表示 00、01、10、及11(二進位),可表達 4 個數,3 bits 可以表示 000、001、010、011、100、101、110、及 111(二進位),可表達 8 個數。依此類推,N bits 就可以表示 2^N 個數,所以 2^16 可以表達 65536 個數,接下來一半撥給正數(0~32767), 一半撥給負數(-1 ~ -32768),所以可表示的數值範。
2006-10-09 18:10:16 · update #1
看樣子,這應該是習題吧!?標法做法,是像龍的說法:用 sizeof() 去算: int i; cout << sizeof(i) << endl;真的要用寫的,下列方法可以: int b; int i; // i is decleared in the type you want to know its size for (b=i=1; i>0; b++,i<<=1); cout << b << endl;這方法只能知道有號整數型別:short, int, long int(, long long int)
2006-10-10 01:06:32 補充:
上述法方還可以測 charint b;int i;for (b=0, i=-1; i; b++, i<<=1);cout << b << endl;這方法可以所有的整數,除了上述型別外,還有: unsigned char, unsigned short, unsigned, unsigned long(, unsigned long long int)但,它有 2 個危險: 1. 如果 compiler 檢查很強,給 unsigned 值為 -1 是不行的! 所以,可能會有 compiler 不能測出 無號整數 的大小!
2006-10-10 01:06:48 補充:
2. C 〝好像〞有定義 0x8000 (負最大值) <<1 應等於 0x8000 (不變)!! 所以,可能會有 compiler 不能測出 有號整數 的大小!2. 的正確性有待查書;但 1 是確有其危險的!所以,建議使用 sizeof() 或我前面提的〝只能算有號整數〞的方法。
2006-10-10 01:07:28 補充:
還是手癢,就回答了!真是不要命了!~.~"
2006-10-09 20:52:38 · answer #1 · answered by ? 7 · 0⤊ 0⤋
據我所知<<「好像」是OK的
如果擔心有問題可以用這個方法
template
size_t BitCount() {
size_t count = 0;
for (T num = ~0 ; num; num&=num-1, count++);
return count;
}
cout << BitCount
cout << BitCount
2006-10-10 02:58:49 補充:
~0的可移植性通常比-1好
尤其對unsigned的行為不太確定的時候
2006-10-09 22:55:23 · answer #2 · answered by novus 6 · 0⤊ 0⤋
可用sizeof()這個函式.sizeof(int)會回傳int這個型態的大小.單位是bytes.
2006-10-09 20:17:16 · answer #3 · answered by 龍 7 · 0⤊ 0⤋