C语言的位运算:-3>>2怎么算?结果是-1。大神们具体一点,谢啦
答案:4 悬赏:20 手机版
解决时间 2021-02-08 12:25
- 提问者网友:最爱你的唇
- 2021-02-08 03:19
C语言的位运算:-3>>2怎么算?结果是-1。大神们具体一点,谢啦
最佳答案
- 五星知识达人网友:不甚了了
- 2021-02-08 04:47
全部回答
- 1楼网友:底特律间谍
- 2021-02-08 06:54
补符号位了
- 2楼网友:三千妖杀
- 2021-02-08 06:27
是二进制换算问题!
假设数值都是16位(方便解释),由于计算机是以数据补码的方式存储,所以要先算-3的补码再>>2
3原码:
0000 0000 0000 0011
-3原码:
1000 0000 0000 0011
-3反码:
你把-3转换为补码的形式,然后进行位计算,最后将结果转换回来。
假设数值都是16位(方便解释),由于计算机是以数据补码的方式存储,所以要先算-3的补码再>>2
3原码:
0000 0000 0000 0011
-3原码:
1000 0000 0000 0011
-3反码:
你把-3转换为补码的形式,然后进行位计算,最后将结果转换回来。
- 3楼网友:荒野風
- 2021-02-08 05:28
以一个字节为例来说明:
char ch=-3;
在计算机中数值是用补码来存储的,故ch在内存中的内容为:
举个简单的例子把, 2<<1,结果为4,2<<2结果为8,找找规律吧,<<后面的数字代表的是2的几次方,<<后面是3那么就是乘以2^3,所以2<<3,其实意思就是2*2^3, 然后我们再推推另一个相反的
>>2,的意思就是除以2^2,所以8>>2,其实就是8/(2^2), 简单记忆就是方向向左就是 左乘2的几次方,方向向右就是 右除2的几次方
char ch=-3;
在计算机中数值是用补码来存储的,故ch在内存中的内容为:
举个简单的例子把, 2<<1,结果为4,2<<2结果为8,找找规律吧,<<后面的数字代表的是2的几次方,<<后面是3那么就是乘以2^3,所以2<<3,其实意思就是2*2^3, 然后我们再推推另一个相反的
>>2,的意思就是除以2^2,所以8>>2,其实就是8/(2^2), 简单记忆就是方向向左就是 左乘2的几次方,方向向右就是 右除2的几次方
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯