为什么-4 -<1111 1100,使用右移的位移运算符移动一位之后,得到-2 -<1111 1110?难道符号位同时跟着移动了吗?移动之后又被补全了?是这样吗
5条回答 默认 最新
- Kwan的解忧杂货铺@新空间代码工作室 2024-04-21 16:12关注
下午好🌅🌅🌅
本答案参考ChatGPT-3.5位移运算符会连同符号位一同移动,如果是有符号整数,则左侧空出的位按符号位填充,右侧空出的位则填充 0。
针对问题中的例子,可以按照以下方法理解:
- -4 的二进制表示为 1111 1100
- 右移一位之后,得到 1111 1110
- 在有符号整数的情况下,左边多出的空位会用符号位进行填充,而符号位为 1,所以左边的空位会被填充为 1
- 因此,最终得到的结果为 -2,二进制表示为 1111 1110
解决方案:
- 当使用位移运算符操作有符号整数时,需要注意符号位的特殊性
- 在移动位数时,应考虑到符号位的填充和右侧空位的补零
- 可以使用无符号整数来代替有符号整数进行位移运算,然后再转换成有符号整数,以避免符号位的特殊处理。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 请问Ubuntu要怎么安装chrome呀?
- ¥15 视频编码 十六进制问题
- ¥15 Xsheii7我安装这个文件的时候跳出来另一个文件已锁定文件的无一部分进程无法访问。这个该怎么解决
- ¥15 unity terrain打包后地形错位,跟建筑不在同一个位置,怎么办
- ¥15 FileNotFoundError 解决方案
- ¥15 uniapp实现如下图的图表功能
- ¥15 u-subsection如何修改相邻两个节点样式
- ¥30 vs2010开发 WFP(windows filtering platform)
- ¥15 服务端控制goose报文控制块的发布问题
- ¥15 学习指导与未来导向啊