我是靠谱客的博主 稳重香氛,最近开发中收集的这篇文章主要介绍左移运算符和右移运算符的使用左移的结果:右移的结果:补充几个奇奇怪怪的小tip:,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

先简单介绍一下,左移运算符和右移运算符的功能:

        计算机中的数字是以二进制补码的形式存放的,而左移和右移运算符就是将内存中的二进制补码数字向左或者右移动。

左移的结果:

         1.左移会让最高位溢出(也就是把最高位抛弃)
         2.接着向低位补0
注意:无论是正数还是负数左移,最低位都是补0!!!

举个正数左移的栗子:

 将10左移2位的代码图:

内存中10左移2位的变化图:

因此最终结果是:40

举个负数左移的栗子:

-10左移2位:

 因此,最中结果是:-40

右移的结果:

         a.对于正数而言:

                        1.右移会让最低位溢出(也就是把最低位抛弃)
                        2.接着向最高位补0

         b.对于负数而言:

                         1.右移会让最低位溢出(也就是把最低位抛弃)
                         2.接着向最高位补1

注意:正数右移最高位补0,负数右移最高位补1.

举个正数右移的栗子:

10右移2位代码图: 

 10右移2位内存图:

最终结果:2

举个负数右移的栗子:

-10右移两位代码图:

-10右移2位内存图:

最终结果:2

补充几个奇奇怪怪的小tip:

        a.  10<<33(10左移33位),但是10是int类型的,只有32位,按常理来想被移除完那就全部补0吧,错!!! 当移动位数超过最大位数后,系统会进行取余操作,即33%32=1,因此它会左移1位哒,是不是被坑了,哈哈哈哈哈哈哈哈哈哈哈。
        补充一点:对于无符号的来说,当移动超过本身位数后就变为0.
        b. 10<<-1(10左移-1位),正常来想,左移-1位,那不就是右移1位么,错!!!在系统中,左移-1位等价于左移31位(原因:32位-1位=31位)。

 球球了,点个赞,支持一下吧,画图好累......

最后

以上就是稳重香氛为你收集整理的左移运算符和右移运算符的使用左移的结果:右移的结果:补充几个奇奇怪怪的小tip:的全部内容,希望文章能够帮你解决左移运算符和右移运算符的使用左移的结果:右移的结果:补充几个奇奇怪怪的小tip:所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(53)

评论列表共有 0 条评论

立即
投稿
返回
顶部