[問題] 一種比較整數大小的寫法
int imin(int x, int y)
{
int mask = (x-y) >> (sizeof(int)*8-1);
return (x&mask) + (y&(~mask));
}
這是我在看別人寫的CODE的時候看到的
但是我一直看不懂為麼可以這樣寫
有麻煩知道的人可以解釋一下嗎??
謝謝
另外阿
用這樣的寫法有比直接用個if-else判斷還要好嗎?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 125.233.149.115
※ 編輯: flax00298 來自: 125.233.149.115 (08/06 11:25)
推
08/06 11:46, , 1F
08/06 11:46, 1F
推
08/06 11:50, , 2F
08/06 11:50, 2F
推
08/06 11:58, , 3F
08/06 11:58, 3F
推
08/06 12:00, , 4F
08/06 12:00, 4F
→
08/06 12:01, , 5F
08/06 12:01, 5F
→
08/06 12:34, , 6F
08/06 12:34, 6F
→
08/06 12:40, , 7F
08/06 12:40, 7F
推
08/06 12:52, , 8F
08/06 12:52, 8F
推
08/06 13:58, , 9F
08/06 13:58, 9F
→
08/06 13:58, , 10F
08/06 13:58, 10F
→
08/06 13:58, , 11F
08/06 13:58, 11F
→
08/06 14:00, , 12F
08/06 14:00, 12F
推
08/06 14:00, , 13F
08/06 14:00, 13F
→
08/06 14:01, , 14F
08/06 14:01, 14F
→
08/06 14:02, , 15F
08/06 14:02, 15F
推
08/06 14:07, , 16F
08/06 14:07, 16F
→
08/06 14:09, , 17F
08/06 14:09, 17F
→
08/06 14:09, , 18F
08/06 14:09, 18F
推
08/06 14:39, , 19F
08/06 14:39, 19F
→
08/06 14:39, , 20F
08/06 14:39, 20F
推
08/06 22:04, , 21F
08/06 22:04, 21F
→
08/06 22:05, , 22F
08/06 22:05, 22F
→
08/06 22:05, , 23F
08/06 22:05, 23F
→
08/06 22:05, , 24F
08/06 22:05, 24F
→
08/06 22:06, , 25F
08/06 22:06, 25F
→
08/06 22:07, , 26F
08/06 22:07, 26F
→
08/06 22:07, , 27F
08/06 22:07, 27F
推
08/06 22:08, , 28F
08/06 22:08, 28F
→
08/06 22:08, , 29F
08/06 22:08, 29F
→
08/06 22:08, , 30F
08/06 22:08, 30F
→
08/06 22:09, , 31F
08/06 22:09, 31F
推
08/07 01:11, , 32F
08/07 01:11, 32F
→
08/07 01:12, , 33F
08/07 01:12, 33F
→
08/07 01:12, , 34F
08/07 01:12, 34F
推
08/07 01:25, , 35F
08/07 01:25, 35F
→
08/07 01:26, , 36F
08/07 01:26, 36F
→
08/07 01:27, , 37F
08/07 01:27, 37F
推
08/07 13:19, , 38F
08/07 13:19, 38F