二进制计算及转换
二进制简单介绍进制与十进制的计算对比用二进制转十进制的转换关系二进制转十进制十进制转二进制二进制的简单运算算符&,简称“与”算符|,简称“或”算符!,简称“非”算符~,简称“取反”运算符^,简称“异”二进制的位运算左移“”无符号左移“”...
目录
一、二进制简单介绍
1、二进制与十进制的计算对比
通过一个 简单的计算说明
在十进制中9 + 1 = 10,此时个位满十进一到十位上,十位上数字加一
在二进制中1 + 1 = 10,此时依照十进制的计算习惯,不过此时为满二进一,此时在十进制中1 + 1 = 2,满足满二进一的二进制计算规则,得出10.(即十进制的2对应二进制的10)
2、常用二进制转十进制的转换关系
二进制 | 十进制 |
---|---|
0001 | 1 |
0010 | 2 |
0100 | 4 |
1000 | 8 |
关注二进制1所在的位置 | 1 | 2 | 3 | 4 |
---|---|---|---|---|
二进制 | 0001 | 0010 | 0100 | 1000 |
十进制 | 1 | 2 | 4 | 8 |
与二的次方的关系 | 20 | 21 | 22 | 23 |
二、二进制转十进制
在二进制中只有一个数字“1”的情况下,伴随着“1”向左移动,都会使得转换的十进制乘以二。
每一个在二进制中只有一个数字“1”的情况,都对应一个十进制数。
例如二进制1100转十进制
- 将1100拆分为只有一个数字“1”的情况,我们将会得到两个二进制数,分别为1000和0100
- 这两个数对应的十进制数为8和4,此时将这两个数按照十进制规则相加得到12
- 那么此时就可以知道,1100转换十进制的结果为12
下面通过图来解释。
举例2:
三、十进制转二进制
首先让我们回顾以下二进制只有一个1的转换十进制的情况
二进制 | 十进制 |
---|---|
1 | 1 |
10 | 2 |
100 | 4 |
1000 | 8 |
10000 | 16 |
100000 | 32 |
1000000 | 64 |
10000000 | 128 |
十进制转二进制的时候
- 首先,将十进制数减去一个能减去的最大的2的自然数次方(即:2自然数,例如,20,215,…)得到一个正数的结果
- 然后再用这个结果继续减去一个能减去的最大的2的自然数次方
- 以此类推,知道结果为0时结束
- 在此过程中使用的自然数从大到小依次排列写为“1”,未使用的记为“0”
例如,14转二进制
14能减去的最大的2的自然数次方为23,则14 - 23 = 6
6能减去的最大的2的自然数次方为22,则6 - 22 = 2
2能减去的最大的2的自然数次方为21,则6 - 21 = 0
中使用的自然数从大到小依次排列:321
使用的写为“1”,未使用的记为“0”:1110
得到结果1110
举例2:
四、二进制的简单运算
1、运算符&,简称“与”
1010 & 0110 = 0010 (用十进制表达,即为:10 & 8 = 2)
进行二进制“与”计算时,
- 二进制数最后一个数对齐(即十进制中的个位),其他数依次对其,缺少的部分补为“0”.
- 分别看对其的数
- 两个数均为“1”,则最终结果计算为“1”,否则 为“0”.
通过该方法得到一个新的二进制数,即为计算结果 十进制数做位运算时,需要转化为二进制计算
2、运算符|,简称“或”
1010 | 0110 = 1110 (用十进制表达,即为:10 | 8 = 14)
进行二进制“或”计算时,
- 二进制数最后一个数对齐(即十进制中的个位),其他数依次对其,缺少的部分补为“0”.
- 分别看对其的数
- 两个数有一个为为“1”,则最终结果计算为“1”,否则 为“0”.
3、运算符!,简称“非”
!1010 = 0101 (用十进制表达,即为:!10 = 5)
进行二进制“非”计算时,
- 二进制数为“0”,计算结果为“1”
- 二进制数为“1”,计算结果为“0”
4、运算符~,简称“取反”
按位取反运算是单目运算,用来求一个位串信息按位的反,即哪些为0的位,结果是1,而哪些为1的位,结果是0。
例如, ~7的结果为0xfff8。
~8=-9
~9=-10
在二进制中,最高位有一位表示正负,最高位为0则为正数,最高位为1则为负数。
5、运算符^,简称“异”
1^0 = 1
1^1 = 0
0^1 = 1
0^0 = 0
五、二进制的位运算
1、左移“<<”
<< 表示左移,不分正负数,低位补0;
如:0010 <<1 = 001(即:2<<1 = 1)可以看作:2 * 21 = 4
1010 << 2 = 10(即:10<<2 = 2)可以看作:10 * 22 = 40
-10<<2 = -40(即:-10<<2 = 2)可以看作:-10 * 22 = -40
-15<<2 = -60(即:-15<<2 = 2)可以看作:-15 * 22 = -60
相当于,每左移一位,对应的十进制数乘以2
2、右移“>>”
需要考虑最高位
“>>”表示右移,如果该数为正,则高位补0,若为负数,则高位补1;
如:0010 >> 1 = 001(即:2>>1 = 1)可以看作:2 / 21=1
1010 >> 2 =10(即:10>>2=2)可以看作:10 / 22 = 2
相当于,每右移一位,对应的十进制数整除2
-10>>2 = -3(即:-10>>2 = -3)可以看作:-10 / 22 - 1 = -3
-15>>2 = -4(即:-15>>2 = -4)可以看作:-15 / 22 - 1 = -4
相当于,每右移一位,对应的十进制数整除2再减去1
3、无符号左移“<<<”
左移运算符是用来将一个数的各二进制位左移若干位,移动的位数由右操作数指定(右操作数必须是非负值),其右边空出的位用0填补,高位左移溢出则舍弃该高位。
4、无符号右移“>>>”
“>>>”表示无符号右移,也叫逻辑右移,即若该数为正,则高位补0,而若该数为负数,则右移后高位同样补0。
详细说明:
右移运算符是用来将一个数的各二进制位右移若干位,移动的位数由右操作数指定(右操作数必须是非负值),移到右端的低位被舍弃,对于无符号数,高位补0。对于有符号数,某些机器将对左边空出的部分用符号位填补(即“算术移位”),而另一些机器则对左边空出的部分用0填补(即“逻辑移位”)。注意:对无符号数,右移时左边高位移入0;对于有符号的值,如果原来符号位为0(该数为正),则左边也是移入0。如果符号位原来为1(即负数),则左边移入0还是1,要取决于所用的计算机系统。有的系统移入0,有的系统移入1。移入0的称为“逻辑移位”,即简单移位;移入1的称为“算术移位”。
更多推荐
所有评论(0)