网站连锁店查询怎么做,建一个网站做cpa联盟,重庆公司网站开发,wordpress qq登入设置文章目录 关于进制位运算左位移右位移无符号右移取反按位与按位或按位异或 关于进制
所有数字在计算机底层都是以二进制的形式存在。
进制的四种表达形式#xff1a;
二进制#xff1a;[0,1]#xff0c;满2进1#xff0c;以0b或0B开头。八进制#xff1a;[0-7]#xf… 文章目录 关于进制位运算左位移右位移无符号右移取反按位与按位或按位异或 关于进制
所有数字在计算机底层都是以二进制的形式存在。
进制的四种表达形式
二进制[0,1]满2进1以0b或0B开头。八进制[0-7]满8进1以0开头。十进制[0-9]满10进1。十六进制[0,9A-F]满16进1以0x或0X开头此处的A-F不区分大小写。
进制之间的相互换算参考https://xinzhi.wenda.so.com/a/1537180588200142
在Java中的整数默认是int类型占4字节占32bit1字节等于8bit其第32位是符号位long类型占8个字节占64bit其第64位是符号位。
比如int整数8的二进制00000000 00000000 00000000 00001000最多不超过32位。
注意符号位0表示正1表示负。
二进制整数的三种形式
原码直接将一个整数转换二进制数最高位是符号位。反码正数的反码和原码相同负数的反码是对原码符号位以外的每一位按位取反由于是负数的反码所以符号位总是1。补码正数的补码和原码相同负数的补码是它的反码加1。
注意正数的原码、反码和补码都相同。补码转原码是补码取反1
为什么要使用原码、反码和补码的表示形式
答计算机辨别“符号位”会让计算机的基础电路设计变得复杂于是人们想到将符号位也参与运算我们知道根据运算法则减去一个整数等于加上一个负数所以机器可以只有加法没有减法这样计算机运算的设计就简单了。在计算机中都是补码参与计算
为什么正数的原码、反码和补码相同
答反码和补码的出现是用来解决做减法问题通过加负数的方式达到做减法的效果所以只有负数才有反码和补码正数没有所有正数的反码和补码都是本身原码。
例演示在计算机中如何计算1-1 0的过程
整数二进制转换
100000000 00000000 00000000 00000001
-110000000 00000000 00000000 00000001
补码转换
100000000 00000000 00000000 00000001补码
-111111111 11111111 11111111 11111110反码- 11111111 11111111 11111111 11111111补码
说明二进制相加逢二进一。00000000 00000000 00000000 00000001 11111111 11111111 11111111 11111111----------------------------------------100000000 00000000 00000000 00000000 - 00000000 00000000 00000000 00000000 0注最高位超出位数直接被舍弃最后计算结果为0.位运算
位运算是对补码的操作。运算完后需要将补码转回原码再转十进制才是最后运算结果由于正数的补码和原码相同就不需要转负数需要转。
注意
正数位运算不管左位移还是右位移都是补0。负数位运算左位移和无符号右移补0且左位移最高位总是1右位移补1。
左位移
运算符 说明整数的二进制数向左移动指定位数。 示例1 2 4
补码转换
100000000 00000000 00000000 000000011向左位移2位1200000000 00000000 00000000 0000000100000000 00000000 00000000 00000001----------------------------------------00000000 00000000 00000000 00000100 4
注左位移后左边超出部分舍弃右边用0补齐。右位移
运算符 说明整数的二进制数向右位移指定位数。 示例82 2
补码转换
800000000 00000000 00000000 00001000
-810000000 00000000 00000000 00001000 (取反)- 11111111 11111111 11111111 11110111 (1)- 11111111 11111111 11111111 111110008向右位移2位00000000 00000000 00000000 0000100000000000 00000000 00000000 00001000------------------------------------------0000000000 00000000 00000000 000010 2
注右位移后左边用0补齐右边超出部分舍弃。-8向右位移2位11111111 11111111 11111111 1111100011111111 11111111 11111111 11111000------------------------------------------11111111 11111111 11111111 11111110 (取反)- 10000000 00000000 00000000 00000001 (1)- 10000000 00000000 00000000 00000010 -2
注运算后得到的是补码需转成原码。无符号右移
运算符 说明整数的二进制数向右位移指定位数正数用0补齐负数用1补齐。 示例 82 2 -82 1073741822
补码转换
800000000 00000000 00000000 00001000
-810000000 00000000 00000000 00001000 (取反)- 11111111 11111111 11111111 11110111 (1)- 11111111 11111111 11111111 111110008无符号向右位移2位00000000 00000000 00000000 0000100000000000 00000000 00000000 00001000------------------------------------------0000000000 00000000 00000000 000010 2-8无符号向右位移2位11111111 11111111 11111111 1111100011111111 11111111 11111111 11111000------------------------------------------00111111 11111111 11111111 11111110 1073741822
注无符号右位移左边用0补齐右边超出部分舍弃。在线二进制转换十进制https://www.jisuan.mobi/KZn.html
取反
运算符~ 运算规则~10 ~011变00变1。 示例~3 -4
补码转换
300000000 00000000 00000000 000000113取反
~ 00000000 00000000 00000000 00000011
-------------------------------------11111111 11111111 11111111 11111100 (取反)- 10000000 00000000 00000000 00000011 (1)- 10000000 00000000 00000000 00000100 -4按位与
运算符 运算规则000; 010; 100; 111只有同时都是1的时候才是1否则是0。 示例3 5 1
补码转换
300000000 00000000 00000000 00000011
500000000 00000000 00000000 000001013按位与500000000 00000000 00000000 0000001100000000 00000000 00000000 00000101
-------------------------------------00000000 00000000 00000000 00000001 1按位或
运算符| 运算规则0 | 00 0 | 11 1 | 01 1 | 11任意一方是1就是1否则是0。 示例3 | 5 7
补码转换
300000000 00000000 00000000 00000011
500000000 00000000 00000000 000001013按位或500000000 00000000 00000000 00000011
| 00000000 00000000 00000000 00000101
-------------------------------------00000000 00000000 00000000 00000111 7按位异或
运算符^ 运算规则0^00 0^11 1^01 1^10相同的值为0不同的值为1。 示例3^5 6
补码转换
300000000 00000000 00000000 00000011
500000000 00000000 00000000 000001013按位异或500000000 00000000 00000000 00000011
^ 00000000 00000000 00000000 00000101
---------------------------------------00000000 00000000 00000000 00000110 6