1.前言

二进制整数最终都是以补码的形式呈现的。正数的最高位是0,负数的最高位是1。正数的原码,补码,反码都一样。负数的反码为原码取反,补码为反码加1。位移运算有两种,一种是带符号位移运算一种是不带符号位移运算。

2.带符号位移运算(<< 与 >>)

带符号位移运算分为<<(左移)与>>(右移)。这两种位移,都是针对补码运算,符号位均参与位移运算,右移除负数往高位补1之外,其余位置都补0,而左移不管是正数还是负数,空位都补0,所以左移过程中,负数有可能变成正数,正数有可能会变成负数,自己体会一下。不分正负:针对偶数一般右移一位就是除2,左移一位是乘2,针对奇数,右移一位就是除2-1,减一因为多余一位被直接抹除了,左移一位也是乘2。请看以下示例:

  • 35
    原码:00100011~~~~~~~~~~~~            >>1(补码右移一位):00010001=17(2的0次方+2的4次方)
    补码:00100011~~~~~~~~~~~~            <<1(补码左移一位):01000110=70
    反码:00100011

  • -35(负数)
    负数比较特殊,这里来特殊说明一下:
    (1)首先说明原码:
    35的原码我们知道是00100011,所以-35的原码是10100011(最高位是符号位,负数的符号位是1,其余位跟正数是一样的)。
    (2)再说反码:
    负数的反码是负数的原码取反,所以-35的反码为11011100(高位仍然不变,负数一直是1,其他取反)。
    (3)再说补码:
    负数的补码是反码加一,所以-35的补码是11011101。所以:

“>>1”(补码右移一位)=11101110(负数右移,高位补1),转成原码=10010010(补码减一,然后取反)= -18

“<<1”(补码左移一位)=10111010,转成原码= 11000110= -70

2.不带符号位移运算,只有右移运算(>>>),不存在左移运算。

不带符号位的位移运算,即没有把最高位当成是一个符号位,正常移动计算。不论正数还是负数,空位都补0。正数无符号右移的最小值是0,负数无符号右移的最小值是1。如果位移的位数=类型本身的位数(整形int是32位,长整形long是64位),那么就还是值本身,所以针对Int类型的负数的最小值是右移31位时得到的1。请看以下示例:

35
补码:00100011
无符号右移一位:00010001=17
无符号右移两位:00001000=8
无符号右移三位:00000100=4

-35
补码:11011101
无符号右移一位:01101110=110
无符号右移两位:00110111=55
无符号右移三位:00011011=27

最后,喜欢动手的可以自己多找几个数运行一下试试,这样能加强记忆。附上转二进制的调用方法:

String m = Integer.toBinaryString(-35<<1);
String n = Integer.toBinaryString(-35>>1);

计算机基础之位移运算相关推荐

  1. 计算机基础知识---位运算的应用

    Author:baiyucraft BLog: baiyucraft's Home 前置学习: 计算机基础知识-位运算的简介   在了解位运算后,我们要明白一点:为什么要学习位运算呢.其实很重要的一个 ...

  2. 计算机基础知识---位运算的简介

    Author:baiyucraft BLog: baiyucraft's Home 1.什么是位运算   稍微有点计算机基础的都知道一点,在程序中的所有数在计算机内存中都是以二进制的形式存储的.位运算 ...

  3. 计算机系统组成及工作原理PPT,第二章 计算机基础知识 2.1 计算机系统的组成与工作原理 2.2 数制转换及运算 2.3 数据在计算机中的表示....

    Presentation on theme: "第二章 计算机基础知识 2.1 计算机系统的组成与工作原理 2.2 数制转换及运算 2.3 数据在计算机中的表示."- Presen ...

  4. 逻辑运算是计算机实现计算器基础,第1章__计算机的发展与运算基础.ppt

    第1章__计算机的发展与运算基础 例[1-1] 按照32位浮点数标准格式,求数 N=2011×0.1011101在计算机中表示的形式. 解:N=2011×0.1011101 =200000011×0. ...

  5. 世界上第一代电子计算机每秒运算次数,计算机基础知识讲稿一

    计算机基础知识讲稿 计算机基础知识讲稿(一) 一 信息与信息社会 信息:信息是指用语言.文字.声音.图象.符号.数字等为载体所表达的事物特征,是对事物存在方式.运行状态.相互联系特征的表达与描述. 信 ...

  6. 计算机能够自动完成运算或处理过程的基础是,计算机文化基础题库.doc

    序号题目答案题型章节( )决定了指令直接寻址的能力. A.位 B.字节 C.字 D.字长D单选01基础( )是CPU可以直接访问的存储器 A.软盘 B.内存 C.优盘 D.硬盘B单选01基础( )提出 ...

  7. python中算术位移运算

    python中有一种位运算--算术位移运算,符号是<<或>>,算术位运算是基于补码的基础上进行的,正数的补码是正数本身,而负数的补码就比较复杂,先把写出正数的二进制,然后取反, ...

  8. 明翰计算机基础知识V0.4(持续更新)

    明翰计算机基础知识V0.4(持续更新) 文章目录 @[toc] 前言 计算机硬件 `中央处理器(CPU)` CPU功能 CPU构成 `CPU缓存` L1 Cache(一级缓存) L2 Cache(二级 ...

  9. 东南大学考研计算机基础大纲,2018东南大学计算机科学与工程学院专业基础课程考试大纲及题型分布...

    据东南大学研究生院消息,2018年东南大学计算机科学与工程学院专业基础课程考试大纲及题型分布已经公布,详情如下: 2018年硕士研究生入学考试专业基础课程考试大纲及题型分布 ►题型分布 一.选择题:( ...

最新文章

  1. html单击数字显示图片,记SpannableString金融数字显示与Html.from显示图片
  2. 来学习开发一个网页版马里奥小游戏吧
  3. Python 计算机视觉(九)—— OpenCV进行图像平滑
  4. java语言的编译器可以用python_jython实现java运行python代码
  5. Request对象及其API应用实操
  6. mac连接手机 vm_使用mac ssh连接谷歌云vm实例
  7. 语义分割之原图与mask的可视化
  8. 决策树(七)--Boost及源码分析
  9. 数据库关于group by 两个或以上条件的分析
  10. android开发笔记之 国家/地区语言速查表
  11. 华为手机隐藏app图标_3秒钟轻松隐藏华为手机桌面图标!不需要下载安装第三方软件哦!...
  12. 全国主要省会城市和地区手机离线地图数据文件下载地址
  13. 如何画出一张合格的技术架构图?
  14. 前端实时可视化开发工具的使用
  15. 单层感知器与线性神经网络
  16. 最小的 中文 linux,麻雀虽小五脏俱全 最小Linux系统试用
  17. JS打印菱形、简易计算器
  18. 关于STM32的裸机多任务多线程心得
  19. 为Go语言GC正名-20秒到100微妙的演变史
  20. 【软件网每日新闻播报│第9-27期】

热门文章

  1. 【Golang】golang实现sha256加密函数
  2. MYSQL Identifying relationship 和non-Identifying relationship 区别。
  3. 习题2-1 求整数均值 (10分)
  4. SAP Solution Manager
  5. sogou地图改版了
  6. 【python爬虫】面向对象方法实现斗图网案例
  7. 前几年系列3:无间道2(由人物到剧情)
  8. P1359 租用游艇 和 P2910 [USACO08OPEN]Clear And Present Danger S
  9. Windows 引导启动流程详述(BIOS-UEFI)
  10. wap2app(一)-- 网站快速打包成app