java中表示每种进制的方式:
二进制: 0b开头<br /> 八进制: 0开头<br /> 十六进制: 0x开头
计算机针对数据在二进制中的存储分为 原码 反码 和补码<br /> 所有的计算都是 补码进行计算<br /> **正数: 原码 反码 补码 三码合一 三码相同**<br /> ** 负数: 原码跟正数相等 反码是原码按位取反 补码是反码+1**<br />二进制的最高位是符号位 1表示当前数为负数 0为正数<br />+9 的原码 反码 补码:<br /> 0000-0000 0000-0000 0000-0000 0000-1001<br />-9<br /> 原码:<br /> 1000-0000 0000-0000 0000-0000 0000-1001<br /> 反码:<br /> 1111-1111 1111-1111 1111-1111 1111-0110<br /> 补码:<br /> 1111-1111 1111-1111 1111-1111 1111-0111
222四个字节 强转成 一个字节
变成-34<br /> 如何来的:<br /> +222 原码 反码 补码:<br /> 0000-0000 0000-0000 0000-0000 1101 1110<br /> 强转以后<br /> 1101 1110<br /> 由于最高位是1 表示此数为负数 那么这个二进制就是补码<br /> 要反推原码 才知道是几<br /> 补码:<br /> 1101 1110<br /> 反码:<br /> 1101-1101<br /> 原码:<br /> 1010-0010 -34
位运算:
按位进行运算 1byte=8bit(比特位)<br /> 位运算:
1.<< 左移运算
被移除的高位丢弃<br /> n<<m<br /> n*2的m次方<br /> 面试题:<br /> 2X8最效率的方法<br /> 2<<3
2. >>右移运算
最高位是1 则空缺位补1<br /> 最高位是0 则空缺位补0
3. >>>无符号右移运算
如果原本是一个负数 那么无符号右移 会变成很大的正数
3的原反补码:<br /> 0000-0000 0000-0000 0000-0000 0000-0011<br /> 3<<2:<br /> 0000-0000 0000-0000 0000-0000 0000-1100
-9的补码:
1111-1111 1111-1111 1111-1111 1111-0111
4.& 位与运算
5. | 位或运算
6. ^ 位异或运算
7. ~ 按位取反运算
&(与)|(或)^(异或)<br /> 如果两边操作数是 布尔值或者布尔表达式<br /> 那么进行的就是逻辑运算
如果两边是具体的数值 那么进行的就是 位运算
3 & 4
位运算是转换成二进制 按位进行 & | ^运算
0当false 1当true
位与运算(&) 全1才1 一0即0<br /> 位或运算(|) 全0才0 一1则1<br /> 位异或运算(^) 相同为0 不同为1<br /> ~ 取反运算 按位取反(符号位也取反)
0000-0000 0000-0000 0000-0000 0000-0011 ----3<br /> ---------------------------------------&<br /> 0000-0000 0000-0000 0000-0000 0000-0100 ----4<br /> -------------------------------------------------<br /> 0000-0000 0000-0000 0000-0000 0000-0000 0
0000-0000 0000-0000 0000-0000 0000-0011 ----3<br /> ---------------------------------------|<br /> 0000-0000 0000-0000 0000-0000 0000-0100 ----4
------------------------------------------------<br /> 0000-0000 0000-0000 0000-0000 0000-0111 ----7
0000-0000 0000-0000 0000-0000 0000-0011 ----3<br /> ---------------------------------------^<br /> 0000-0000 0000-0000 0000-0000 0000-0100 ----4<br /> ---------------------------------------------<br /> 0000-0000 0000-0000 0000-0000 0000-0111 ----7
0000-0000 0000-0000 0000-0000 0000-0011 ----3<br /> --------------------------------------~<br /> 1111-1111 1111-1111 1111-1111 1111-1100 ----补码
1111-1111 1111-1111 1111-1111 1111-1011 ----反码
1000-0000 0000-0000 0000-0000 0000-0100 ----原码<br /> -4