美文网首页
移位操作

移位操作

作者: Rumbles | 来源:发表于2018-02-28 17:13 被阅读34次

正数的移码 移位规则:
数符不变:(单:符号位不变,双:第1符号位不变)
空位补0:(右移时第二符号位移至尾数最高位)
(1)对无符号数3来说:

3的二进制表示 0000 0011
x<<1往左移一位,最左边的位移掉了,最右边的移进来的位补零。变成00000110,所以结果是6;[1*2^2 + 1*2^1 + 0*2^0 = 6]

x>>1往右边移一位,由于是无符号数,所以逻辑右移,最右边一位移掉,最左边移进来的位补零,变成00000001,所以结果是1。[1*2^0 = 1]

(2)对于有符号数3来说:
数符不变:(单:符号位不变,双:第1符号位不变)
左移空位补0
右移空位补1

x<<1往左移一位,最左边的位移掉了,最右边的移进来的位补零。变成00000110,所以结果是6;

x>>1往右边移一位,由于是有符号数,可能发生逻辑右移,也可能发生算术右移,这一点,C标准并没有明确地指定是使用逻辑右移还是算术右移。但大多数的机器都使用算术右移,变成00000001,所以结果还是1。

负数的移码规则:

(3)对于有符号数-3来说:

-3 的二进制表示:负数的二进制在计算机当中以补码的形式存在 1111 1101
x<<1往左移一位,最左边的位移掉了,最右边的移进来的位补零。变成1111 1010,结果是-6;[-(1*2^2 + 0*2^1 + 1*2^0 +1) = -6]

x>>1往右移一位,由于是有符号数,可能发生逻辑右移,也可能发生算术右移。大多数机器使用算术右移,变成1111 1110,结果是-2。[-(1*2^0 +1) = -2]

单双符号位:

双符号位补码”又称为“[变形补码]

双符号位判决法
计算机运算溢出检测机制,采用双符号位,00表示正号,11表示负号。如果进位将会导致符号位不一致,从而检测出溢出。结果的符号位为01时,称为上溢;为10时,称为下溢。
例如设X = + 1000001,Y = + 1000011,采用双符号位表示X=00 1000001,Y=00 1000011,[X + Y]补=01 0000100,实际上,运算结果产生了正溢出。

参考:
https://www.cnblogs.com/huangjianwu/p/4549085.html

相关文章

  • 移位操作

    正数的移码 移位规则:数符不变:(单:符号位不变,双:第1符号位不变)空位补0:(右移时第二符号位移至尾数最高位)...

  • java二进制表示形式与移位操作符

    1.java二进制表示形式 2.移位操作符1.左移位操作符(<<)2.“有符号”右移位操作符(>>)3.“无符号”...

  • 计算机组成原理定点数的运算

    1.定点数移位运算算数移位:正数:移位后添0负数:原码添零,补码左0右1,反码全部填1 逻辑移位:将操作数看作无符...

  • JMeter:时间函数___timeShift

    __TimeShift(格式,日期,移位,语言环境,变量):可对日期进行移位加减操作 格式- 将显示创建日期的格式...

  • 移位操作符

    1、介绍 移位操作符只可处理整数类型。 << : 左移位操作符(i<<2),顾名思义,即在将整个字节向左移动...

  • 移位操作符

    java中有三种移位运算符 <<:左移位操作符,能按照操作符右侧指定的位数将操作符左边的操作数向左移动(在低位补0...

  • 位操作与移位操作

  • 工作笔记(四)

    今天看到一个移位操作符的运用1<<-1,一般移位操作数都是正数,看到后这个操作数是-1后先是惊讶,然后陷入思考,因...

  • 一文彻底弄懂Java的移位操作符

    前言 对于移位操作符,很多人既感到熟悉,又感到陌生。熟悉是因为移位操作符是最基本的操作符之一,几乎每种编程语言都包...

  • Java的位运算符详解实例

    1.与(&)、或(|)、非(~)、异或(^) 2.移位运算符 移位运算符操作的对象就是二进制的位,可以单独用移位运...

网友评论

      本文标题:移位操作

      本文链接:https://www.haomeiwen.com/subject/wkrixftx.html