带符号的二进制数

在计算机内存中,整数一律采用补码的形式来存储。这意味着,当读取整数时还要采用逆向的转换,也就是将补码转换为原码

原码、反码、补码的概念只对负数有实际意义,对于正数,它们三者(原码、反码、补码)都一样

负数的补码是其反码加 1

十进制真值原码反码补码
910010 00010010 00010010 0001001
-9-10011 00010011 11101101 1110111

在二进制中,可以通过最高位来区分符号的正负。最高位为0时,表示该二进制数为正数;最高位为1时,表示该二进制数为负数。因此,在计算机中,二进制数的最高位通常被称为“符号位”,用来表示该数的符号

左移:将二进制数的所有位向左移动指定的位数,并在低位补充0,高位直接舍弃。左移操作可以用左移运算符"<<"来表示

数值:3,左移2位

   0000 0000 0000 0000 0000 0000 0000 0011

0000 0000 0000 0000 0000 0000 0000 0011 (左移2位)

   00 0000 0000 0000 0000 0000 0000 001100 (高位舍弃,低位补0)

注意:

1):左移运算可能改变其正负性

2):左移几位相当于在原数的基础上乘以2的指定位数次方(3 <<2,3乘以2的2次方)

右移:将二进制数的所有位向右移动指定的位数,低位溢出舍弃,高位补符号位。右移操作可以用右移运算符">>"来表示

数值:3,右移2位

0000 0000 0000 0000 0000 0000 0000 0011

    0000 0000 0000 0000 0000 0000 0000 0011 (右移2位)

00 0000 0000 0000 0000 0000 0000 0000 (高位补符号位,低位舍弃)

数值:-16右移3位

1000 0000 0000 0000 0000 0000 0001 0000 (原码)

1111 1111 1111 1111 1111 1111 1110 1111 (反码)

1111 1111 1111 1111 1111 1111 1111 0000 (补码)

      1111 1111 1111 1111 1111 1111 1111 0000 (低位舍弃)

1111 1111 1111 1111 1111 1111 1111 1110 (高位补充符号位)

1111 1111 1111 1111 1111 1111 1111 1101 (反码)

1000 0000 0000 0000 0000 0000 0000 0010 (原码)

-16 >> 3 结果为-2

注意:

1):右移运算不改变其正负性

2):右移几位相当于在原数的基础上除以2的指定位数次方(-16 >>3,-16除以2的3次方)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CgfFan

感谢看官老爷赏的咖啡钱

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值