2.1 整数的二进制表示与位运算
关于本节内容主要介绍了正负整数的二进制表示,以及运算,并未有什么难点,如有什么不懂推荐去学习一下计算机基础或者数字逻辑,上面都详细介绍了进制的转换以及运算。
其中需要注意的是位运算位运算有移位运算和逻辑运算。移位有以下几种。
1)左移:操作符为<<,向左移动,右边的低位补0,高位的就舍弃掉了,将二进制看作整数,左移1位就相当于乘以2。
2)无符号右移:操作符为>>>, 向右移动,右边的舍弃掉,左边补0。
3)有符号右移:操作符为>>.向右移动,右边的舍弃掉,左边补什么取决于原来最高位是什么,原来是1就补1,原来是0就补0,将二进制看作整数,右移1位相当于除以2。
逻辑运算有以下几种。
按位与&:两位都为1才为1。
按位或|:只要有一 -位为1, 就为1。
:按位取反~: 1变为0, 0变为1。
按位异或^:相异为真,相同为假。
2.2 小数的二进制表示
这节我不太好表述出来,还是推荐去看原文,理解并不难,但是用自己的语言不太好说。
(小数的二进制转换方法:方法一:二进制的小数转换为十进制主要是按权展开。方法二:十进制的小数转换为二进制,主要是小数部分乘以2,取整数部分依次从左往右放在小数点后,直至小数点后为0。)
2.3 字码的编码与乱码
编码分为两大类:非Unicode码,Unicode码。
非Unicode码包含:ASCII、ISO 8859-1、Windows-1252、GB2312、GBK、GB18030和Big5
Unicode编码:就是给所有字符分配了唯一数字编号,这个编号范围从0x000000~0x10FFFF,包括110多万。
编码转换:几种格式的编码可以借助Unicode编号进行编码转换。
乱码:因为使用编码的不同使得解析错误和编码转换时的错误导致。
乱码恢复:1.使用UltraEdit,UltraEdit支持编码转换和切换查看编码方式,也支持文件的二进制显示和编辑,所以我们以UtraEdit为例,其他一些编辑器可能也有类似功能。
2. 使用JAVA,具体操作还请看原书。
2.4 char的真正含义
char本质上是-一个固定占用两个字节的无符号正整数,这个正整数对应于Unicode编号,用于表示那个Unicode编号对应的字符。。由于固定占用两个字节,char 只能表示Unicode编号在65536以内的字符,而不能表示超出范围的字符。
另附char的赋值方式:
char c ='A'
char c ='马'
char c =39532
char c =0x9a6c
char c ='\u9a6c'