zoukankan      html  css  js  c++  java
  • C#位操作

    一.原码与补码

      在计算机系统中,数值一律用补码来存储(表示)。主要原因:使用补码,可以将符号位和其他位统一处理;同时减法也可按加法来处理。另外,两个补码表示的数相加时,如果最高位(符号位)有进位,则进位被舍弃。

    1.原码转补码分两种情况
    (1)正数的补码:与原码相同(已知原码求补码)
      例如:+9的原码是0000 1001。补码也是0000 1001。


    (2)负数的补码:符号位为1,其余位为该数绝对值的原码按位取反,然后整个数加1。
      例如:-7原码为1000 0111(高位为符号位,1表示负数,0表示正数),补码为1111 1001.

    2.补码转原码也分两种情况(已知补码求原码)
    (1)正数的原码:与补码相同
      例如:+9的补码是0000 1001。原码也是0000 1001。


    (2)负数的原码:符号位为1,其余位为该该补码按位取反,然后整个数加1。
      例如:-7的补码是1111 1001,原码是1000 0111。

    .移位运算符   

      左移 (<<) 

      将第一个操作数向左移动第二个操作数指定的位数,空出的位置补0。
      左移相当于乘. 左移一位相当于乘2;左移两位相当于乘4;左移三位相当于乘8。

      x<<1等于 x*2
      x<<2等于x*4

      同理, 右移即相反:

      右移 (>>)
      将第一个操作数向右移动第二个操作数所指定的位数,空出的位置补0。

      右移相当于整除. 右移一位相当于除以2;右移两位相当于除以4;右移三位相当于除以8。

      x>>1等于 x/2
      x>>2等于 x/4 

    因为位移比乘除速度快.对效率要求高,而且满足2的幂次方的乘除运方,可以采用位移的方式进行

    位运算只能用于byte short char int long 等整型类型,不能应用于浮点数操作

  • 相关阅读:
    hdu_2224_The shortest path(dp)
    hdu_4824_Disk Schedule(dp)
    hdu_5680_zxa and set(想法题)
    hdu_5683_zxa and xor(非正解的暴力)
    hdu_1429_胜利大逃亡(续)(BFS状压)
    hdu_1254_推箱子(双BFS)
    hdu_1969_pie(二分)
    hdu_2446_Shell Pyramid(数学,二分)
    hdu_2141_Can you find it?(二分)
    5.2 nc + JMX查看分布式程序数据
  • 原文地址:https://www.cnblogs.com/lyh523329053/p/8052241.html
Copyright © 2011-2022 走看看