码迷,mamicode.com
首页 > 其他好文 > 详细

位运算

时间:2016-04-05 15:38:04      阅读:193      评论:0      收藏:0      [点我收藏+]

标签:

位运算符

进制:

数码:某一种进制中所能出现的数字

????十进制:0至9

????二进制:0、1

????八进制:0至7

????十六进制:0至9与A至F

基数:某一种进制中所出现的数码的个数

????十进制:10(逢十进一)

????二进制:2(逢二进一)

????八进制:8(逢八进一)

????十六进制:16(逢十六进一)

权:用于衡量,某一种进制中某一位上的数码作用大小的值,权是一个幂(xy)

x表示:基数

y表示:位数

(1234)10

数码4所在的在位的权:100 1

数码3所在的在位的权:101 10

数码2所在的在位的权:102 100

数码1所在的在位的权:103 1000

(1234)10为什么是1234

4*100+3*101+2*102+1*103=1234

?

(10101)2

从右向左每一位数码所在的位的权:

数码1所在的在位的权:20 1

数码0所在的在位的权:21 2

数码1所在的在位的权:22 4

数码0所在的在位的权:23 8

数码1所在的在位的权:24 16

(10101)2=1*20+0*21+1*22+0*23+1*24=21

?

8421BCD码

可以将255之前的二进制很方便转换成十进制

128

64

32

16

8

4

2

1

二进制数

?

1

1

0

0

0

0

1

权展开式:

????某种进制中数位上的数码与该数码所在位上的权的乘积的和,任何一种进制都可按权展开式,转换为十进制。

?

(75)8=(?)10

7*81 + 5*80=61

?

(FA)16=(?)10

F*161????????A*160????????=

15*161????????10*160????????=(250)10

?

十进制转换成二进制:

????分两整数与小数部分,分别进行转换,整数部分采用的是基数连除取余法。小数部分采用的是基数连乘取整法

128

64

32

16

8

4

2

1

二进制数

?????

1

0

1

十进制数

二进制转换为八进制(或十六进制):

????1、以小数点为起点,整数部分向左,小数部分向右,每3位(或4位)一组,不足位数提整数部分在左边补0,小数部分在右边补0。

????2、再将每一组3位(或4位)二进制转换成八进制(或十六进制)数。

(010 110 101 . 010)=(?)8

(010 110 101 . 010)=( 265.2)8

(10110101.01)=(?)16

(1011 0101.0100)=(?)16

11????????5????.4

B????????5????.4

(1011 0101.0100)=( B5.4)16

?

原码:原码就是符号(正负号)加上二进制数

????正数的原码在最高位用0表示

????负数的原码在最高位用1表示

????注意:计算机中高位只能是第32位

十进制数10的原码:

0 000 0000 0000 0000 0000 0000 0000 1010

十进制数-10的原码:

1 000 0000 0000 0000 0000 0000 0000 1010

反码:

????正数的反码与原码相同

????负数的反码是在原码的基础上,符号位不变,其余位取反

十进制数10的反码:

????0 000 0000 0000 0000 0000 0000 0000 1010

十进制数-10的反码:

????原码:1 ????000 0000 0000 0000 0000 0000 0000 1010

????反码:1????111 1111 1111 1111 1111 1111 1111 0101

补码:

????正数的补码与原码相同

????负数的补码在反码的基础上+1

十进制数10的补码:

0 000 0000 0000 0000 0000 0000 0000 1010

十进制数-10的补码:

反码:1????111 1111 1111 1111 1111 1111 1111 0101

补码:1????111 1111 1111 1111 1111 1111 1111 0110

?

正数的原码反码补码相同

负数的

????原码:最高位为1

????反码:在原码基础上,符号位不变,其余位取反

????补码:在反码的基础上加1

&:按位与

运算规则:

????参与运算的两个操作数的二进制形式,对应位上的数,如果都为1,那么结果位上的就是1,否则为0

?

|:按位或

运算规则:

????参与运算的两个操作数的二进制形式,对应位上的数,如果都为0,那么结果位上的就是0,否则为1(换句话说,只要有一个为1则为1)

?

^:按位异或

运算规则:

????参与运算的两个操作数的二进制形式,对应位上的数,如果不同,那么结果位上的就是1,否则为0

?

?

~:按位非

运算规则:

????对操作数的二进制形式每一位取反(包含符号位)

示例:

技术分享

<<:算术左移

运算规则:

????对参与运算的操作数的二进制形式,符号位不变,其余位整体左移,左边溢出的忽略,右边空位补0

?

>>:算术右移

运算规则:

????对参与运算的操作数的二进制形式,符号位不变,其余位整体右移,右边溢出的忽略,右边空位补符号位

示例:

技术分享

位运算

标签:

原文地址:http://www.cnblogs.com/nyxd/p/5354993.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!