深入理解计算机系统2

深入理解计算机系统(二)

信息的表示和处理

理解字节序(大端、小端)

 可以参考博客大小端介绍以及判断

位级运算

一个有趣的应用使用异或实现两个元素之间的交换

void inplace_swap(int *x, int *y)

{

*y=*x^*y;

*x=*x^*y;

*y=*x^*y;

}

逻辑运算符和位级运算符的一个重要区别

如果第一个参数求值就能够确定表达式的结果,那么逻辑运算符就不会对第二个参数求值。

逻辑右移和算术右移的区别

例如[xn-1...x0],逻辑右移k位的结果为[0..0,xn-1..xk],算术右移k位的结果为[xn-1,xn-1..xn-1..xk]C语言中无符号的右移一定是逻辑的,有符号几乎所有的编译器/机器组合都对有符号数据使用算术右移。

5 C语言有符号和无符号数

-1<0u,大家猜想这个的条件是什么,是falseC语言隐式强制把有符号数转换为无符号数。

总结

数的表示,应该注意一些隐式转换,数据转换之间要注意。

当前标签: 计算机系统

 
十二天深入理解计算机系统(二) jacksu@tencent 2013-12-10 22:15 阅读:30 评论:0  
 
十二天深入理解计算机系统(一) jacksu@tencent 2013-11-24 23:19 阅读:1128 评论:0  
 
页面缓存的那些事儿 jacksu@tencent 2013-10-20 22:41 阅读:871 评论:1  
 
内存就是RAM? jacksu@tencent 2013-10-19 22:50 阅读:895 评论:8  
 
CPU 硬盘性能到底相差多少 jacksu@tencent 2013-10-19 15:29 阅读:1181 评论:13  
 
 
原文地址:https://www.cnblogs.com/Leo_wl/p/3468351.html