今天继续补充之前的代码运算,介绍位运算符以及二进制与十进制之间的互换
一.位异或运算 符号是(^)
运算规则:两个数转为二进制,然后从高位开始比较,如果相同则为0,不相同则为1。举个例子:
15^22
15转为二进制为1111,22转为二进制为10110,
15的二进制1111可默认为01111,然后开始比较得到11001,再转为十进制就是25
二.位非运算 符号是(~)
运算规则:如果位为0,结果是1;如果位为1,结果是0;
在Java中,所有数据的表示方法都是以补码的形式表示,如果没有特殊说明,Java中的数据类型默认是int,int数据类型的长度是8位,一位是四个字节,就是32字节。
因为高位是1,所以原码为负数,负数的补码是其绝对值的原码取反,末尾再加1。这么说可能有点难理解,其实也可以直接换言之原数加一变为负数。
举个例子:
~37 = -38
三.位或运算 符号是(|)
运算规则:将两边数字转为二进制对比,两个位只要有一个是1,那么结果都为1,否则就为0。
举个例子:
67|33
67转为二进制:1000011;33转为二进制:0100001
结果比较之后是1100011,转为十进制,就是99。
四.位与运算 符号是(&)
运算规则:数值的各位分别相与,同时为1才得1,否则为0。
举个例子:
67&33
67转为二进制:1000011;33转为二进制:0100001
结果比较之后为 000001,转十进制就是1。
那么十进制和二进制分别是什么呢?又怎么换算呢?
十进制:即满十进一,满二十进二,以此类推,也就是咱们平常所用的数字。
二进制:二进制数据是用0和1两个数码来表示的数。它的[基数]为2,进位规则是“逢二进一”,借位规则是“借一当二”。
十进制转二进制:采用"除2取余,逆序排列"法。具体做法是:用2整除十进制整数,可以得到一个商和余数;再用2去除商,又会得到一个商和余数,如此进行,直到商为小于1时为止,然后把先得到的余数作为二进制数的低位有效位,后得到的余数作为二进制数的高位有效位,依次排列起来。
比如:67=1000011
二进制转为十进制:要从右到左用二进制的每个数去乘以2的相应次方,小数点后则是从左往右
比如:0100001=33
关于位运算及二进制的总结如上所述,欢迎查遗补缺。