————恢复内容开始————
————恢复内容开始————
进制的转换
十进制转相应进制
(十进制)231 转 八进制 除八取余法 从下而上取余
231/8=28 ….7
28/8=3…….4
3/8=0……..3
(十进制)231=(八进制)0o347
(十进制)231 转 16进制 除十六取余法 从下而上取余
231/16=14……7
14/16=0……….14
(十进制) 231=(十六进制)0xe7
(十进制)231.3 转 16进制 (*)小数部分 乘十六取整法 从上而下取整
0.3*16=0.48…………0
0.48*16=7.68……….7
0.68*16=10.88……..10
0.88*16=14.08……..14
0.08*16=1.28……….1
0.28*16=4.48 ………4
(十进制)231.3=(十六进制)0xe7.07ae14
相应进制转十进制
(八进制)0o27.43转 十进制
7*8^0+2*8^1=(八进制)23
4*8^-1+3*8^-2=35/64=0.546875
0o27.43=(十进制)23.546875
(十六进制)0o27.43转 十进制(同上)
。。。。。。。。
进制换算补充
在进行十转二,八,十六进制小数点换算时,不管怎么乘二,八或十六,结果小数部分始终不为零时,分别有一舍二入,三舍四入,七舍八入对应操作
八进制直接转十六进制或者十六转八,只有通过二进制,或十进制中间过渡,没有捷径,如果哪位大神有直接转换的方法欢迎告知
二进制的原码,反码,补码
正数的原码,反码,补码
24=(二进制)00….00011000
原码:00….00011000
反码:00….00011000
补码:00….00011000
负数的原码,反码,补码
-24=(二进制)1000….00011000
原码:1000…..00011000
反码:11111….11100111
补码:1000…..11101000 (反码加一)
二进制的运算
计算机对数字的加减运算都是用补码
-23(原码):1000…..00010111
-23(反码):1111……11101000
-23(补码):1111……11101001
12(原码):0000…..00001100
12(反码):0000…..00001100
12(补码):0000…..00001100
12(补码)0000…..00001100(补码相加时,高位也就是符号位也要运算进来)
-23(补码)1111……11101001
` -23(补码)+12(补码)=1111……11110101(结果如果是负数,也就是高位是1,取反加一)
(结果取反加一)1000……00001011= -23+12=-11
&(与),^(异或),|(或) ,~(按位取反) (*)
&(与)(1&1=1,1&0=0,0&0=0)
101010001
1101 00111
=100000001
^(异或)(1^1=0,0^0=0,0^1=1)
101010001
1101 00111
=01111 0110
|(或)(1|0=1,1|1=1,0|0=0)
101010001
1101 00111
=11111 0110
~(按位取反)对补码进行取反,取反结果为负,进行反码加一
-12
原码:100……..1100
反码:111………0011
补码:111………0100
取反:000………1011=11
12
原码:000……..1100
反码:000……..1100
补码:000……..1100
取反:111………0011 结果负数,反码加一
100……..1101=-13
1
原码:000……..0001
反码:000………0001
补码:000………0001
取反:111………1110
100……….0010=-2
-1
原码:100……..0001
反码:111………1110
补码:111………1111
取反:000………0000=0
位移算数左移<<,算数右移>>,逻辑右移>>>(全都是补码进行的位移)
5>>2=1
(补码)00..0101>>2=00..0001
-5>>2=-2
10..0101
(补码)11..1010+1=11..1011
11..1011>>2=1111..1110(为负数,要反码+1)
1000..0001+1=1000..0010=-2
5>>>2=1(和算数位移结果一样)
(补码)00..0101>>2=00..0001
-5>>>2=1073741822
10..0101
(补码)11..1010+1=11..1011
11..1011>>>2=0011..1110(逻辑右移,高位始终补零,所以不用反码补一,结果就是一个很大的整数)
————恢复内容结束————
————恢复内容结束————