原码、反码、补码 和位移符号

本文主要探讨负数的原码、反码、补码的概念,以及在计算机中如何进行位移运算。讲解了负数的反码通过原码各数据位取反、符号位不变得到,补码由反码加1得到。同时,详细分析了在Java中,-19进行左移<<、右移>>和无符号右移>>>的运算过程和结果,展示了位移运算对数值的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

正数的原码、反码、补码是相同的,所以这里不讲正数的原反补,只讲负数。
前提知识:
1)符号位“0”代表正,符号位“1”代表负;
2)负数的反码由原码各数据位取反、符号位不变得到;
3)负数的补码由反码加1得到;
4)计算机运算均以补码形式运算,这是说 + - * % >> << >>>这些操作都是用补码计算。
反过来,负数的反码可由补码减1得到,负数的补码可由反码各数据位取反、符号位不变得到。
针对在这里插入图片描述
注意上图针对负数,使用上述规则需要确认符号位是否为“1”,即是负数。

int a = -19为例,求得

a<<2 == -76
a>>2 == -5

在java里int占4个字节长度空间,即 有4*8=32 bit,其中最高位为符号位。
-19原码
在这里插入图片描述
-19反码
在这里插入图片描述
-19补码
在这里插入图片描述

1、<<

<<对-19的补码的数据位左移两位,符号位不动,补0,得到
-76的补码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值