㈠ 计算机源码,反码,补码之间怎么计算
转换方法:
如果是正数或零,则首位为 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