(uint)Convert.ToInt32(elements[0]) << 24;
回答
的< <是left shift operator。
鑑於數字是二進制數,它會將指定數量的所有位移到左邊。
如果我們有
2 << 1
這將在二進制(00000010)2號,並將其轉移到左邊一位。這給你4(000000100)。
溢出
注意,一旦你到了最左邊的位被丟棄。所以假設你正在使用一個8位大小的整數(我知道c#uint就像你在你的例子中是32位 - 我不想輸出一個32位數字,所以假設我們在8位)
255 << 1
將返回254(11111110)。
使用
非常小心前面提到的溢出,比特移位是一個非常快速的方式來乘或除以2。在一個高度優化的環境(例如遊戲),這是一個非常有用的方式非常快地執行算術。
然而,在你的例子中,它只佔用數字的最右邊8位,使它們成爲最左邊的8位(乘以16,777,216)。爲什麼你想這樣做,我只能猜測。
我想你指的是Shift operators.
正如Mongus Pong所說,轉變通常用於快速增殖和分裂。 (由於溢出可能會導致奇怪的問題)。
我正要走出去,試圖猜測你的代碼在做什麼。
如果 elements [0]是一個字節元素(也就是說,它只包含8位),那麼這個代碼將導致直接乘以2^24。否則,它將丟棄24位高位並乘以2^24。
我的代碼獲取客戶端IP地址並使用數據庫表中指定IP的範圍進行檢查。由於IP地址的直接比較是不可能的,所以我對它進行了分割,以便它在數組中有4個元素。在移位之後,我添加總和並將它與DB中的IP範圍進行比較(DB中的IP範圍也使用相同的邏輯進行分割)。 – SRA 2010-06-11 11:30:14
- 1. '*(unsigned int *)((unsigned int)block + n * i)是什麼意思'
- 2. 什麼是(int)在c#中的意思?
- 3. 這個轉換是什麼意思?
- 4. 這是什麼意思? [c#]
- 5. 這是什麼意思 - C#
- 6. 這是什麼意思-c
- 7. 這是什麼意思*(int *)&x當typecasting?
- 8. 這是什麼意思? (int&)a
- 9. 這是什麼意思const int *&var?
- 10. int max =〜0;這是什麼意思?
- 11. 這是什麼意思? int foo = foo + 4;
- 12. C中的shellcode - 這是什麼意思?
- 13. (unsigned char *)&niz [10]是什麼意思?
- 14. 什麼是'unsigned'意思是什麼時候它本身?
- 15. 函數__shfl_up(int var,unsigned int delta,int width)的width參數是什麼意思?
- 16. C++什麼是'int x =(anyInt1,anyInt2);'意思?
- 17. int values []是什麼意思?
- 18. int A [] = {}是什麼意思?
- 19. * int是什麼意思?
- 20. 什麼?在C#中是什麼意思?
- 21. 這是什麼意思在Objective-C
- 22. 這是什麼意思在C++
- 23. 是什麼!在這意思?
- 24. 這個C++代碼是什麼意思
- 25. 這個C習語是什麼意思?
- 26. 這個C++語句是什麼意思?
- 27. 什麼是(int - > int) - >(int - > int)是什麼意思?
- 28. 這個C++代碼是什麼意思?
- 29. 這個C宏是什麼意思?
- 30. C++ Biginteger,這是什麼意思?
在任何事情中說「這個」的好規則是讓它明確指出你所指的是什麼。你是指整行代碼?演員?移位運算符? 24號? – 2010-06-10 11:55:41
如果您在之前的某些問題上接受了答案,這將有所幫助 – thecoop 2010-06-10 13:34:21