二进制、八进制、十六进制===============原码、反码、补码
补充点信息 任何常数的0次幂都是1
===========================================================================================================
每个位数上的数提取出来,乘(几进制)的(位数-1)次幂 例 1 * 2^(n - 1) n为位数
二进制转十进制 例 1*2^(1-1)
八进制转十进制 例 0234 4*8^0 + 3*8^1 + 2*8^2
===========================================================================================================
十进制转二进制,将该数不断除以2,得到的余数倒过来既是2进制(这里余数只有1或0); 二进制需要 同时1个字节是8位,如果不足8位需要补0
例34 34/17->1/8/4/2/1 00100010
十进制转八进制 同理,不断除以8,其他不变
===========================================================================================================
二进制转八进制 从低位开始,将二进制每3位一组(因为每3位最大的值是7,正好对应八进制的7,所以这里是3位一组),转成8进制即可,此处不需要倒序
100 011 100 -> 434
二进制转十六进制 同上,不同的是将二进制每4为一组(因为4位最大的值就是15,正好对应八进制的15,所以这里4位一组),转成16进制即可,不需要倒序
===========================================================================================================
八进制转二进制 和上面相反,将八进制每一位数字,转换为3位一组的二进制(3位一组和上面同理)
十六进制转二进制 将十六进制每一位数字转换为4位一组的二进制(同上)
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
原码 反码 补码
正数 只有原码没有反码和补码;反码和补码只是单纯为负数准备避免一个数的正负加一起不等于0等问题
-1
原码 10000001
反码 11111110 反码除符号位不变其他取反
补码 11111111 在反码的基础上+1
二进制的最高位是符号位,0为正数,1为负数
正数的原码、反码、补码都一样
负数的反码=它的原码符号位不变,其他位取反(0->1,1->0)
负数的补码=它的反码+1;负数的反码=负数的补码-1
0的反码、补码都是0
java没有无符号数,java中的数都是有符号的
在计算机运算的时候,都是以补码的方式来运算
当我们看运算结果时,要看它的原码

浙公网安备 33010602011771号