进制与运算

    xiaoxiao2021-08-26  154

    进制转换 十进制 --> 二进制 打比方: //      12 = 1100(二进制) //      11 = 1011 (二进制) 官方的办法: 173 = 173÷128(2的7次方)  173 8÷64  173 8d ÷32  173 8d2 ÷16 ... 173 8d2 % 16 % 8 %4 %2 ÷1 = 1 0 1 0..1 逆推规律是:先要先找到最接近十进制整数的 2n      十进制--> 十六进制 比方:常用到的颜色RGB R RED    0~255  G GREEN  0~255  B BLUE    0~255  白色:R,G,B都为255  255十六进制色值就是 255÷ 16 255% 16 ÷1  即为15 15  表示成十六进制就是 F F 所以白色即可表示为:0xFFFFFF 特殊情况: 负数怎么转二进制 比方:-5转二进制 转换之前先了解下二进制。反码和补码,大学都学过 例:拿十六位字节开刀      00000000 00000001   反码是:                         11111111 11111110  补码是 反码+1:             11111111 11111110  先了解5的二进制是: 00000000 00000101 反码:                       11111111 11111010  补码:                       11111111 11111011(这便是-5的二进制表达方式) 这里需要了解的是:二进制第一位代表符号位,0 表示正数 1表示负数 因此在java中 short(十六位)  最大值是 01111111 11111111 =  215 -1                                          最小值是 10000000 00000000 = 01111111 11111111+1 = - 215 所以这里就了解了为什么short的范围是( -215 ~215 -1) 同样的道理 byte范围是(-128~127)ps:128= 27同样的道理int也是一样。 负数转二进制其实也比较简单的,先截取小数点前面的数正常转换,再把后面的数不停的乘以2直到取到小数点后面为0  打比方: 7.25   7+0.25    7--> 111 0.25×2=0.5  取0   0.5×2=1.0 所以 0.25 --> 01(用的不多知道就好了)double的范围有空可以研究下 同样n进制转十进制比较简单就不做记录了。 十六进制<==>二进制 比较简单首先   二进制 -->十六进制 规律:把二进制四位四位分开  分别转化 打比方:10010010  ∵ 1001 = 9 ; 0010 = 2;∴ 10010010 = 0x92 十六进制转二进制也是一样,逆着来就是。 位运算的使用 先是最简单的<< 和 >> 打比方:(以下二进制都用8位表示) 5 << 1  = 0000 0101<< 1 = 0000 1010 = 10  5 <<2   = 10<<1 = 0001 0100 = 20 规律可循 左移n位就是  乘以 2n 右移同样的道理,结果是除以 2n 所以代码中的乘以2除以4的代码全部可以替换了。。 特殊情况: -5 = 1111 1011 >> 1 = 1111 1101 取反码+1 =   0000 0010+1 = 3 公式理解为:                                  x = n>>m (m>0)                                 x = n<<m (m>0) 当 n>0  x= x÷ 2m                            分割线              x= n× 2m 当n<0  x=(x-1)÷ 2m                                                          2.& 和 | 与和或    ^ 和 ~ 异或和非           与运算:进制位上都是1才取1其他都是0,即:0&0=0; 0&1=0;1&0=0;1&1=1;           打比方:5&10 = 0000 0101 & 0000 1010  =  0000 0000 =0   11&5 = 1                                          或运算:进制位上只要有一个数有1就为1 ,即:0|0=0; 0|1=1;1|0=1;1|1=1;                     打比方:5|10 = 0000 0101 | 0000 1010  =  0000 1111 = 15     11|5=15                                              利用点: 2 & ( 2m -1)(n>m) = 0      2 | ( 2m -1)(n>m) = 2 +( 2m -1)                        例如:表的权限控制 。例如设置权限 a,b,c,d值为 1,2,4,8   给甲(x)发权限(y)代码是x= x  | y;判断甲权限是否有y代码是 x&y>0。                                       异或   (类似与磁场同级为阴)  : 0^0=0; 0^ 1=1;1^0=1;1^1=0;                  打比方:5^10 = 0000 0101 ^ 0000 1010  =  0000 1111 = 15   11^5 = 14                   观察以上可以得出规律: (a^b) + (a&b) = a | b                                    非用法不一样一点  :~0=1 ;~1=0                  打比方:~5 = ~0 000 0101 = 1 111 1010 = -6(取反码+1)                  规律:~a  = -(a+1)                  
    转载请注明原文地址: https://ju.6miu.com/read-677170.html

    最新回复(0)