在搞位运算符之前,首先要搞清楚几种进位制的互换。
真的开始的时候一头冒水,单是看,肯定不行,不计一下始终是纸上谈兵。可恶的C语言教科书,老是无端端就说到“按位取反运算符”其中马上就用“八进制数0217(即二进制10001111)”说得好像理所当然,而我则是??????思想之中老是觉得当年高中的时候电脑老师曾经好像讲过十进制数和二进制数之间的互换。于是就去找书,又忽然发现原来高二下学期的时候发的电脑教材原来就有说明。那本书我翻都没翻过,因为高二下开始就没有电脑课了。那本书里面居然是讲“第一章 程序设计基础; 第二章 程序设计实例; 第三章 进一步认识信息处理工具——计算机”气死人,怎么这么实际的东西就没有教呢?都是可恶的应试教育害的。
乱翻书之中终于发现为什么C语言在Windows系统中好像不怎么出现的原因。因为对于C语言来说,它不是可视化开发系统,也就是它不是早就搞好一块一块的东西和程序等待我们去拼凑,也许这样的说法并不真的能表达我的意思。我要说明的就是,C语言需要一步一步用字符去表达意思,这些操作基本上都是程序人员在键盘上输入,而我现在所接触的几乎所有系统都是可视化系统。从Windows到Photoshop,都是以窗口形式出现,而现在正十分流行的Visual C++也是可视化开发系统。这样子能给人更直观的感觉。如果Authoware不是可视化,Flash不是可视化,真的会令我这些傻B很难上手。我一直不知道C语言和C++的区别,区别就在于一个是可视化开发系统,一个不是。要不为什么C++前面要加Visual而C语言没有呢!(我猜)根据我仅有的一点经验,如果没有猜错的话在Visual C++之中,编辑的代码可以在我熟悉的窗口中输入,而且在简单的保存之后可以很容易按一个“预览”之类的键达到把刚才的编程很快地运行出来,马上能够看到效果。
以上的东西都是我根据在Authoware和Flash的一点逻辑思维而想出来的,不知道正确性如何。还是要看看Visual C++的书来证实一下。
书中说“目前,Windows下有很多可视化开发系统,如Visual C++, Visual Basic, Delphi等。”Visual Basic在那本书的后面介绍了一些简单的例子,在窗口的帮助之下,编程似乎简单了一点。
同时在书后面的附录之中发现了近几天不断出现在我眼前的一个词的中英文对照ASCII(American Standard Code for Information Interchange)就是美国信息交换用标准代码,原来如此,原来ASCII是这些东西的缩写。而char字符型的范围就是ASCII这又是怎么理解呢?
言归正传,还是回到几个进制的换算,于是就
http://www.d2school.com/bcyl/bhcpp/newls/ls06.htm#6.2.1,本来想剪切-粘贴,不过那么多的资料这样做好像不太好,搞个连接就算了。不过它还是没有直接说道八进制和二进制的直接转换。都是以十进制为中间桥梁的。不过这本可恶的C语言教材几乎所有地方都是用八进制和二进制来说明问题,即使是十进制的还要把它转成八进制,然后再说明问题,由此看来,应该八进制和二进制的转换应该不是很难的,甚至比十进制换二进制还要简单。不过为什么就是……
按位“与”、按位“或”、按位“异或”是明白它的操作是怎样的。但就是不明白为什么它说“例如,假设X是一般的unsigned类型的整数(2个字节),我们想获取其低字节的值时,只需要将X与0377相与即可。”这是什么意思啊!为什么不和别的八进制相与,偏偏只和0337相与呢?还有什么叫做低字节?同样出现相似问题的就是“例如要使X的各位翻转,只需执行X=X^0177777”就是X和0177777异或,这也许还好理解一点因为0177777(八进制数)的二进制数正好是16个1,正好使任何数都来个翻转。但在“与”的那里的0377(八进制数)的二进制数是0000000011111111,又为什么和任何数做到“与”的效果呢?
位运算符搞定之后第二章就好像已经结束了,不过好像留给我的更多是疑问。真的觉得一个技术blog——技术点滴的作者(linrun)的一句话说得很对“做软件开发的人应该尊重编码,就如同剑客尊重他手中的剑那样。尊重来源于了解,畏惧来源于陌生,轻蔑来源于无知。”