[問題] 請問一個&的用法
int convert_num(int num)
{
/* convert a 16-bit number into a 32-bit Linux integer */
if (num & (1<<15) ) {
num -= (1<<16);
}
return num;
}
這是一個可以把int 的32bits只擷取後面16bits的function
我想問的是if後面的判斷式 那個寫法的意思
我想他的意思應該是num的第15個bit的值吧
我測試的結果 這種寫法 傳出來的值就是第n個bit的值(0or1)*2^n
可是為甚麼能這樣寫?
可以請高手指導一下嗎?
這個&在這邊的意義跟reference的address有什麼不同嗎?
謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.252.170
→
04/03 12:29, , 1F
04/03 12:29, 1F
可是我用下面這個測試
int c=5;
printf("%d",(c&(1<<2)));
印出來結果是4耶 如果只是bit-wise的結果
不是應該是0或1嗎 怎麼還會乘上2的n次方?
※ 編輯: lavanil 來自: 140.112.252.170 (04/03 12:39)
推
04/03 12:38, , 2F
04/03 12:38, 2F
推
04/03 13:00, , 3F
04/03 13:00, 3F
→
04/03 13:06, , 4F
04/03 13:06, 4F
→
04/03 13:08, , 5F
04/03 13:08, 5F
→
04/03 13:08, , 6F
04/03 13:08, 6F
→
04/03 13:10, , 7F
04/03 13:10, 7F
→
04/03 13:10, , 8F
04/03 13:10, 8F
→
04/03 13:14, , 9F
04/03 13:14, 9F