免费做qq互赞网站,哪家做网站最好,南昌网站建设价格,国外网络营销二进制
负数的十进制转二进制数#xff08;-2 - 1110#xff09;#xff1a; 正数 - 1#xff0c;再取反#xff0c;得到负数的二进制。 例如#xff1a;-2 #xff1a;0010 - 0010 - 1 - 0001 - 取反 - 1110
负数的二进制转十进制#xff08;…二进制
负数的十进制转二进制数-2 - 1110 正数 - 1再取反得到负数的二进制。 例如-2 0010 - 0010 - 1 - 0001 - 取反 - 1110
负数的二进制转十进制1001 - -7
负数取反再 1得到正数x则结果为 -x例如1001 - 取反 - 0110 - 0110 1 - 0111 则 - x - 7
无符号范围
0 --- 2^(n-1)n为符号位数
有符号范围
正数范围0 --- 2^(n-1) - 1n为符号位数负数范围-2^(n-1) --- -1n为符号位数
~ 相反数
原数取反之后再加1就是它的相反数负数的最小值不能转换出它的相反数因为转换后还是原来的值正数范围没有对应的数
位运算
|两个位都为0时结果才为0只要符号位有1就保留两个位都为1时结果才为1^两个位相同为0相异为1穿透性 两个位都会执行会一直穿透下去 (左移)左移一位整体状态向左移动一位最低位(右边) 补一个0左移多少位就补多少个0非负数 i 等同于乘以2的i次方只有非负数符合这个特征负数不要用 (右移)右移一位整体状态向右移动一位最高位(左边) 补一个1右移多少位就补多少个1非负数 i 等同于除以2的i次方只有非负数符合这个特征负数不要用 (右移)右移一位整体状态向右移动一位最高位(左边) 补一个0右移多少位就补多少个0
逻辑运算
||两个位都为false时结果才为false穿透性当有一个为true就停止穿透后面的不会继续执行两个位都为true时结果才为true穿透性当有一个为false就停止穿透后面的不会继续执行
为什么这么设计二进制
为了加法的逻辑是一套逻辑没有条件转移提高运算速度用位运算实现加减乘除计算机中只有位运算逻辑单元减乘除都是由加法高效地拼出来的
关于溢出
自己确保自己的调用所得到的结果不会溢出一定是自己确保的计算机不会给你做检查
打印二进制 System.out.print((num (1 i)) 0 ? “0” : “1”); 状态与1位移多少位进行与运算结果为0则该位状态为0大于0则为1 long类型的数字num有64位 num (1 48)这种写法不对 因为1是一个int类型只有32位所以1 48早就溢出了所以无意义 应该写出num 1L 48