zoukankan      html  css  js  c++  java
  • python自学笔记(六)二进制与位移

    一、二进制

    a = 1

    bin(a)-->ob1  #python内置方法

    ob 表示二进整型制格式

    二、难缠符号

    1、位移二进制的位

    >> 右位移,想象成 切肉切去最后一位

    例如 x >> y  #先转成二进制再位移

    计算公式:x/(2**y)

    << 左位移 整体左移后补0

    例如 x<<y

    计算公式:x*(2**y)

    2、 & 按位与:是否都为1,右对齐,前边补0,有一个不是1就为0

    0110

    1000

    -------

    0000

    3、| 按位或 只要有一位是1,就得1

    0110

    1000

    ------

    1110

    4.^按位异或:参与运算的两个值,如果两个对应bit位相同,则结果为0,否则为1

    按位异或的几个常见用途:
    (1) 使某些特定的位翻转
        例如对数10100001的第2位和第3位翻转,则可以将该数与00000110进行按位异或运算。
           10100001^00000110 = 10100111

    (2) 实现两个值的交换,而不必使用临时变量。
        例如交换两个整数a=10100001,b=00000110的值,可通过下列语句实现:
        a = a^b;   //a=10100111
        b = b^a;   //b=10100001
        a = a^b;   //a=00000110

    (3) 在汇编语言中经常用于将变量置零:
        xor   a,a

    (4) 快速判断两个值是否相等
        举例1: 判断两个整数a,b是否相等,则可通过下列语句实现:
            return ((a ^ b) == 0)

    4.~按位取反(翻转):1变0,0变1,公式是~x = -(x+1)

    ps:补码  1、在计算机系统中,数值一律用补码来表示(存储)。 

      主要原因:使用补码,可以将符号位和其它位统一处理;同时,减法也可按加法来处理。另外,两个用补
    码表示的数相加时,如果最高位(符号位)有进位,则进位被舍弃。
    2、补码与原码的转换过程几乎是相同的。
    求给定数值的补码表示分以下两种情况:
    (1)正数的补码:与原码相同。
    【例1】+9的补码是00001001。
    (2)负数的补码:符号位为1,其余位为该数绝对值的原码按位取反;然后整个数加1

    其他用法
    1、判断奇数偶数
         4&1   0 是偶数 1是奇数
    2、计算硬盘容量
        11866(字节) >>10 
            11k
        11 >> 10
            0M
  • 相关阅读:
    Spring MVC 框架搭建及详解
    设计模式应用案例(上)
    UAC权限
    General Structure of Quartz.NET and How To Implement It
    求比指定数大且最小的“不重复数”问题
    Getting Started with Core Data
    HDU 2034 人见人爱A-B
    第九届蓝桥杯JavaC组决(国)赛真题
    第九届蓝桥杯JavaC组决(国)赛真题
    第九届蓝桥杯JavaC组决(国)赛真题
  • 原文地址:https://www.cnblogs.com/zhenniu/p/5043899.html
Copyright © 2011-2022 走看看