今天用memset時發現它不能給乙個陣列賦值1,於是就花時間了解了一下它。先上msdn的介紹:
sets buffers to a specified character.
void *memset( void *dest, intc, size_tcount);
return value
memsetreturns the value ofdest.
parameters
dest
pointer to destinationc
character to set
count
number of characters
remarks
thememsetfunction sets the firstcount bytes ofdest to the character c.
最後一句翻譯過來就是:memset函式將dest所指的前count位元組的記憶體空間賦值為c。先看一段程式吧
很容易知道0和-1的二進位制表示分別為0000 0000以及1111 1111,大家注意到1個int變數是佔4個位元組的,而memset每次只能給1個位元組的記憶體單元賦值,但是因為剛好0000 0000 和1111 1111的高位低位都一樣,所以memset就「湊巧」完成了每4個位元組賦32位0和1,也就是十進位制的0和-1.那換成其他的行嗎?再看一段程式。
因為1的二進位制表示為0000 0001 所以4個位元組連起來就是0000 0001 0000 0001 0000 0001 0000 00001,轉換成10進製也就是16843009。這就說明並不是每乙個10進製數都能正確用memset賦值。大家可以多嘗試幾個數。
0和1,黑和白
0和1那麼的簡單,就這樣組成了現代社會最堅實的it基礎。黑和白,這麼的簡單,就這樣引領了人們久遠時代裡面的想象力,儲存了人們的創造力。在那些只是紙筆的時間裡面,黑和白就是那麼重要。因為黑色,其實不是沒有光,而是所有的光都已經被吸收了。而白色,其實並不是沒有顏色,而是有所有顏色。這麼來想,黑白的簡單突...
IT就是0和1的問題
最近一直在使用火狐作為主要的瀏覽器,很少使用ie 遨遊 the world等瀏覽器,為什麼呢?主要還是流氓軟體鬧的,怕怕了,機器因為那些東西重新做了好幾次了,折騰不起了。公司的 最近重新製作了,感覺很舒服,等等,這種舒服只是在遨遊等ie系的瀏覽器下邊的,在火狐地下則就不是那麼好看了。新的 完全參照了...
IT就是0和1的問題
最近一直在使用火狐作為主要的瀏覽器,很少使用ie 遨遊 the world等瀏覽器,為什麼呢?主要還是流氓軟體鬧的,怕怕了,機器因為那些東西重新做了好幾次了,折騰不起了。公司的 最近重新製作了,感覺很舒服,等等,這種舒服只是在遨遊等ie系的瀏覽器下邊的,在火狐地下則就不是那麼好看了。新的 完全參照了...