㈠ 計算機源碼,反碼,補碼之間怎麼計算
轉換方法:
如果是正數或零,則首位為 0,補碼=原碼=反碼。
否則,首位為 1,數值位取反加一,即可實現「補碼與原碼」互換。
例如:
對 1111 1001 取反,為 1000 0110,再加一,得:1000 0111。
對 1000 0111 取反,為 1111 1000,再加一,得:1111 1001。
這說明,補碼 ←→ 原碼,方法是相同的。
㈡ linux shell 兩個文件內容做加減法
awk'{getlines<"第一個文件"
split(s,array)
for(i=1;i<=NF;i++)$i=$i-array[5+i]
print}'第運握陸二個旁頃文件
結果皮液
9761 98.895 10 1 98.896
㈢ linux內核:關於list_entry定義中的一個小小疑問
list_entry(ptr, type, member)這個函數的功能就是:從結構體(type)某成員變數(member)指針(ptr)來求出該結構體(type)的首指針。
因為內核鏈表,一般你只能知道鏈表指針域的地址和指針域的名稱,而不知道這個節點也就是結構的地址,所以用這個宏來求,
struct member(ptr) 這個一般都是指針域的地址名稱
低地址 |____________________| 高地址
我們已知的是member的地址ptr,想要知道的是結構體的首地址,
而&((type *)0)->member求的是 struct~member之間的偏移量
所以用 已知的ptr - struct~member之間的偏移量 = 結構體首地址
你可以看看這個他說的比較詳細
http://blog.csdn.net/chuchuanchuan/article/details/8138009