位移运算符

xiaoxiao2021-03-01  32

位移运算,首先要理解进制转换,以十进制,二进制转换为例

正整数和负整数二进制转换也不相同

正整数:

正整数转成二进制。要点一定一定要记住哈:除二取余,然后倒序排列,高位补零。

2:其二进制就是00000010

正整数二进制转成十进制:0*2^0+1*2^1=2

负整数:

负数二进制表示

负数是通过补码作为负数二进制表示

而补码等于原码在保持符号位不变的情况下其余位0和1互换得到反码,反码+1即为补码

例如 -5

其原码表示为:10000101(最左边1即为符号位,负数符号位是1)

反码:11111010

补码:11110101

-5的二进制表示即为:11110101

负数二进制转十进制:

就是将负数的二进制转为原码,最后得出十进制

还是以-5为例:

-5的补码是:11110101

则它的反码是:11111010

原码就是:10000101

所以其十进制表示为:-(1*2^0+0*2^1+1*2^2)=-5

位移运算符在程序开发中经常出现,例如2<<3,代表2左移3位,便捷计算方式

2*2^3=16

具体运算过程

首先将2转换为2进制即为:00000010

左移三位就是把该数字高位(左侧)的三个零移出,其他的数字都朝左平移3位,最后在低位(右侧)的三个空位补零。

二进数表示就是00010000,转换为十进制:1*2^4=16

负数位移运算

例如-5<<2,便捷计算方式:

-5*2^2=-20

具体运算方式

-5的二进制(补码):11110101

左移两位:就是把数字高位(左侧)两位移出,其他的数字都朝左移两位,最后在低位(右侧)的两个空位补1。

然后转为原码:10010100;转为十进制:-20.

右移运算

正数右移运算:

20>>2

便捷运算:20/2^2=5

具体运算过程

20的二进制:00010100

右移两位:就是把数字低位(右侧)两位移出,其他的数字都朝右移两位,最后在高位(右侧)的两个空位补0.

00000101=1*2^0+1*2^2=5

负数右移运算:

-20>>2

便捷运算:-20/(1*2^2)=-5

具体运算过程

负数的右移运算比正数相对复杂

首先得到-20的二进制(补码)

原码:10010100

反码:11101011

补码:11010111

右移两位:就是把数字低位(右侧)两位移出,其他的数字都朝右移两位,最后在高位(右侧)的两个空位补1.

得出:补码:11110101,然后将补码转为原码

补码:11110101

反码:11111010

原码:10000101

得出十进制:-(1*2^0+1*2^2)=-5

 

 

 

 

 

 

                 

 

 

 

转载请注明原文地址: https://www.6miu.com/read-4149993.html

最新回复(0)