二进制与进制转换
二进制是计算技术中广泛采用的一种数制。二进制数据是用0和1两个数码来表示的数。它的基数为2,进位规则是“逢二进一”,借位规则是“借一当二”,由18世纪德国数理哲学大师莱布尼兹发现。当前的计算机系统使用的基本上是二进制系统,数据在计算机中主要是以补码的形式存储的。计算机中的二进制则是一个非常微小的开关,用“开”来表示1,“关”来表示0。
在Java语言中byte代表最小计量单位,byte由8位2进制数组成。
二进制与编码
一般对英文字符而言,一个字节表示一个字符,但是对汉字而言,由于低位的编码已经被使用(早期计算机并不支持中文,因此为了扩展支持,唯一的办法就是采用更多的字节数)只好向高位扩展。
一般字符集编码的范围 utf-8>gbk>iso-8859-1(latin1)>ascll。ascll编码是美国标准信息交换码的英文缩写,包含了常用的字符,如阿拉伯数字,英文字母和一些打印符号,请注意字符和数字的区别,比如'0'字符对应的十进制数字是48。
unicode编码包含很多种格式,utf-8是其中最常用的一种,utf-8名称的来自于该编码使用8位一个字节表示一个字符。对于一个汉字而言,它需要3个字节表示一个汉字,但大中华地区人民表示不服,搞一套gbk编码格式,用两个字节表示一个汉字。
二进制的转换:
例如,设有一个二进制数:0110 0100(由后至前分别为第0位,第1位……第7位),转换为10进制为:
下面是竖式:
01100 100 换算成 十进制
第0位 0 x 2^0 = 0
第1位 0 x 2^1 = 0
第2位 1 x 2^2 = 4
第3位 0 x 2^3 = 0
第4位 0 x 2^4 = 0
第5位 1 x 2^5 = 32
第6位 1 x 2^6 = 64
第7位 0 x 2^7 = 0
(01100 100) =100
二进制位运算
优点:特定情况下,计算方便,速度快;由于多数电子设备都由二进制书写的,所以支持面广;较于算术方法,逻辑简单。(机器默认32位)
按位与(&)
两位全为1,结果才为1:
0&0=0; 0&1=0; 1&0=0; 1&1=1;
例如:51&5 即0011 0011 & 0000 0101 = 0000 0001 所以51&5=1.
用法:
(1)