[問題] bitwise與負數
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
C::B 10.05
gcc4.5.1
問題(Question):
bitwise在用於負數的時候 結果不如預期
0xFFFFFFFF >> 1 預期是0x7FFFFFFF
程式碼(Code):(請善用置底文網頁, 記得排版)
http://ideone.com/5WO5L
補充說明(Supplement):
使用unsigned可以順利得到我想要的結果
但是用int出來的結果讓我蠻感興趣的
這代表在處理負數的時候會保留最左邊的位元嗎
在最下面一次移了4個bit 結果卻還是0xffffffff
所以可以推論編譯器是依次一個一個移動位元 而不是一次移四格再補1囉?
單純想知道這方面的問題是有standard還是編譯器自行決定的XD
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 123.240.28.61
推
04/03 13:34, , 1F
04/03 13:34, 1F
推
04/03 13:52, , 2F
04/03 13:52, 2F
推
04/03 14:18, , 3F
04/03 14:18, 3F

→
04/03 14:19, , 4F
04/03 14:19, 4F
抱歉 我補一下code
#include <iostream>
using namespace std;
int main()
{
int i,j;
i=0x7fffffff;
j=0xffffffff;
for(int k=31;k--;i>>=1,j>>=1)
cout << hex << i << "\t" << j << endl;
cout << (j>>4) << endl;
return 0;
}
output:
7fffffff ffffffff
3fffffff ffffffff
1fffffff ffffffff
fffffff ffffffff
7ffffff ffffffff
3ffffff ffffffff
1ffffff ffffffff
ffffff ffffffff
7fffff ffffffff
3fffff ffffffff
1fffff ffffffff
fffff ffffffff
7ffff ffffffff
3ffff ffffffff
1ffff ffffffff
ffff ffffffff
7fff ffffffff
3fff ffffffff
1fff ffffffff
fff ffffffff
7ff ffffffff
3ff ffffffff
1ff ffffffff
ff ffffffff
7f ffffffff
3f ffffffff
1f ffffffff
f ffffffff
7 ffffffff
3 ffffffff
1 ffffffff
ffffffff
※ 編輯: x000032001 來自: 123.240.28.61 (04/03 14:54)
推
04/03 15:41, , 5F
04/03 15:41, 5F
推
04/03 15:43, , 6F
04/03 15:43, 6F
→
04/03 15:45, , 7F
04/03 15:45, 7F
→
04/03 15:47, , 8F
04/03 15:47, 8F
推
04/03 16:30, , 9F
04/03 16:30, 9F
→
04/03 16:55, , 10F
04/03 16:55, 10F
推
04/04 10:53, , 11F
04/04 10:53, 11F
→
04/04 16:37, , 12F
04/04 16:37, 12F
推
04/04 17:25, , 13F
04/04 17:25, 13F
→
04/04 17:55, , 14F
04/04 17:55, 14F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章