讲了二进制有一周啦,今天才来写博客,不知道龙哥你不要骂我 我的数学是体育老师教的,我能说数学我高考都没及格过。。。。。但是今天来说二进制。
还好是简单的二进制。
首先我们要知道计算机内部执行的时候并不是直接执行的我们苦逼的程序猿写的这些C++语言或者JAVA语言,而是进行了编译成机器语言来执行,在机器内部就是通过二进制运算来运行的。二进制主要就是用0和1两个数字来表示所有数据。
二进制表示整数:比如byte 类型的 3------->0000 0011 规则:符号位是0,后面反正就是逢二进一嘛
二进制表示负数:比如byte类型的- 3------->1111 1101 规则:负数的表示就比较坑了,它的二进制表示是:左边第一位是符号位,正数的符号位是0 ,负数的符号位是1 , 负数表示它的 左边第一位还是为1,然后后面7位是用正数的原码的反码的补码(原码、反码、补码不知道的问百度)。举例:表示十进制:-127--------->符号位为1+正数的原码:1111 1111----------->求反码:1000 0000 --------->求补码:1000 0001 最后-127的二进制表示就是10000001
位运算:
1、按位与 & 这是一个双目运算 如3&2 规则:同位比较,都为1,结果为1 否则为0。 举例:3&2
3-------> 0000 0011
2-------> 0000 0010
运算&---> 0000 0010
2、按位或 | 这也是一个双目运算 如3|2 规则:同位比较,有一个为1, 该位为1 。举例:3|2
3-------> 0000 0011
2-------> 0000 0010
运算 | ---> 0000 0011
3、按位 异或 ^ 这也是一个双目运算 如3^2 规则:按位比较,相同为0 不同为1 。 举例:3^2
3-------> 0000 0011
2-------> 0000 0010
运算^--->0000 0001
4、按位 取反 ~ 这是一个单目运算 如~3 规则:按位 0变1 ,1变0 。 举例:~3
3-------> 0000 0011
~3------> 1111 1100
以上是位运算,按字面意思来讲也很容易理解,位运算就是一个位一个位地做安规则运算,做比较就行啦。接下来说位移运算
1、左移运算: << 书写格式:a<<b 举例:3<<2 含义:将3向左移动2位 规则:二进制数b全部左移b位(左边的二进制位丢弃,右边补0)
3--------> 0000 0011
3<<2---> 0000 1100
-3-------> 1111 1101
-3<<2--> 1111 0100
2.右移运算: >> 书写格式:a>>b 举例:3>>2 含义:将3向右移2位 规则:二进制数b全部右移b位(右边的二进制位丢弃,正数的左边补0,负数的左边补1)
3--------> 0000 0011
3>>2---> 0000 0000
-3-------> 1111 1101
-3>>2--> 1111 1111