本周学习了以下内容:
1,位运算。这周加深了对位运算的了解,学会了位运算的一些常用的运用,如 :
b >> 1 或 b << 1 相当于 b/2 或 b*2;交换a和b的值可以:a ^= b; b ^= a; a ^= b;
2,取无穷大的值。在数据的最大值不超过int类型最大值时可以用0x7fffffff或0x3f3f3f3f表示无穷大,其中0x3f3f3f3f适用范围更广,更好用,因为0x7fffffff加上常数时会溢出,而0x3f3f3f3f加上无穷大(它本身)小于int类型最大值,还是无穷大,跟数学上无穷大+无穷大=无穷大的定义相似,同时0x3f3f3f3f还适用于memset函数进行初始化。
3,数的进制转换。原本以为数的进制转换,如从A进制转换成B进制,得先把A进制转化成10进制,再从10进制转化成B进制,而这个过程如果数据大,就得使用高精度的算法。而今天看了某位大佬的讲解发现数的进制转换可以用数学方法直接从A进制到B进制,而不需要麻烦的高精度算法。将A进制直接转换成B进制的方法和十进制转B进制的一样,都是用短除法。
如: 设十进制的123,十三进制的123分别转化为三进制。
如下图:
那么123(13)除以3如何算出等于51(13)呢?首先13进制是满13就往前进一位,所以123(13)除以3时的第一位的1小于3,所以如图:
直接用该方法进行进制转换与先转十进制再转B进制相比大大减小了代码的复杂程度。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)