zoukankan      html  css  js  c++  java
  • python算数、逻辑运算,位运算

    • 算术运算符

    对变量和数组进行算术运算。

    算术运算符:+-*/%

    +:将连个或者多个数值相加

    -:将两个数值相减

    *:将两个数值相乘

    /:将两个数值相除

    %:取相除的余数

    • 赋值运算符

    将右边的值(计算结果)赋值给左边的变量

    赋值运算符:=+=-=*=/=%=.=

    =:赋值,将右边的值赋值给左边的变量

    +=:将左边的变量的值加上右边的结果之后,再将值赋值给左边的变量

    -=*=/=%=.=都是一样的效果

    注意!!!“.”十分特殊,表示一种字符串连接运算

    抑制错误,不让错误出现

    错误抑制符:@

    三元运算符

    参与运算的表达式有三个

    语法:表达式1 ? 表达式2 : 表达式3

    如果表达式1为真,那么计算表达式2,否则计算表达式3

    <?php
    $wenheichouwa = "ishere";
    $res = ($wenheichouwa=="ishere")?"喜欢小烤肠和小松鼠":"喜欢昌仔";
    echo $res."<br/>";
    $duwa = &$wenheichouwa;
    $duwa = "nothere";
    echo $res."<br/>";
    echo $wenheichouwa."<br/>";
    echo $duwa."<br/>";
    $res = ($wenheichouwa=="ishere")?"喜欢小烤肠和小松鼠":"喜欢昌仔";
    echo $res."<br/>";
    ?>
    • 自操作运算符

    自己操作自己的运算符

    自操作运算符:++--

    ++:分为前置++和后置++$a = $a + 1

    前置++++$a

    后置++$a++

    通常,在循环中,使用自运算比较,用户控制循环变量。

    • 字符串运算符

    连接字符串

    字符串运算符:..=

    $a = ‘hello ’;

    $b = ‘world’;

    .:表示两个字符串连接,不会改变原来的变量本身

    $c = $a . $b;

    .=:将两个字符串连接起来后再赋值给左边的变量

    $a .= $b <===========> $a = $a . $b;

    • 位运算符

    针对系统硬盘上存储的位进行操作(实际操作是以字节为单位),位运算在计算过程中,每个位的操作返回的结果都是1或者0

    位运算符:&|~^>><<

    &:按位与,表示两个位都为1时,则返回1,否则返回0

    |:按位或,表示两个有一个为1的时候,返回1,否则返回0

    ~:按位非,如果本身为0,则返回1,如果本身为1,则返回0

    ^:按位异或,如果两位不相同时,则返回1,如果两位相同则返回0

    >>:按位右移,将整个字节向右移一位,左边空出来的使用0补充

    <<:按位左移,将整个字节向左移一位,右边空出来的使用0补充

    右移运算乃是原来的结果右移几位就除以几个2,然后向下取整,左移运算是原来的结果左移几位就乘以几个2;

    <?php
    $mynum=5;
    echo "mynum左移5位的最终结果是".($mynum<<6)."<br/>";
    $hisnum=6;
    echo "hisnum右移2位的结果是".($hisnum>>2)."<br/>";
    ?>

    • 原码,反码,补码

     原码----一个数的二进制形式

    反码----一个数二进制按位取反

    补码----一个数二进制按位取反并加1,一个正数的原码,反码,补码都相同

    存储的实际情况----正数以原码的形式存储,负数以补码的形式存储。

    以整数1为例,我们知道php的整型数占4个字节,每个字节占8位,正数的原码,反码,补码又都相同,正数的最高位是0,所以对于1有
    
    #原码 00000000 00000000 00000000 00000001
    #反码 00000000 00000000 00000000 00000001
    #补码 00000000 00000000 00000000 00000001
    负数反码。补码的错误操作形式

    而对于-1来说,按照既定原则,最高位应该为1,所以他的原码形式为 #原码 10000000 00000000 00000000 00000001 反码就是各位取反 #反码 01111111 11111111 11111111 11111110 补码就是反码各位再加1
    01111111 11111111 11111111 11111110
    +
    00000000 00000000 00000000 00000001
    =
    01111111 11111111 11111111 11111111
    但是问题显然出现了,最终结果 01111111 11111111 11111111 11111111 明显是个正数!

    所以对于负数来说,他的反码形式是 最高位不动,其余的位取反
    
    
    正确姿势,负数的反码最高位不变,其他位取反
    
    -1的反码
    
    #反码11111111 11111111 11111111 11111110
    
    补码 = 反码+1
    
    11111111 11111111 11111111 11111110
    +
    00000000 00000000 00000000 00000001
    =
    补码为 11111111 11111111 11111111 11111111

    php提供了几常见进制之间转换的函数

    二进制转为其他进制

    binoct();//转为八进制

    bindec();//转为十进制

    binhex();//转为十六进制

    八进制转为其他进制

    octbin();//转为二进制

    octdec();//转为十进制

    octhex();//转为十六进制

    十进制转为其他进制

    decbin();//转为二进制

    decoct();//转为八进制

    dechex();转为十六进制

    十六进制转为其他进制

    hexbin();转为二进制

    hexoct();//转为八进制

    hexdec();//转为十六进制

  • 相关阅读:
    asp.net textbox控件readonly为true时,后台取值的问题
    未能加载文件或程序集“ICSharpCode.SharpZipLib, Version=0.86.0.518, Culture=neutral, PublicKeyToken=1b03e6acf1164f73”或它的某一个依赖项
    DataSet与DataReader的比较
    EntityFramwork所有 SSDL 项目都必须以同一提供程序为目标。ProviderManifestToken“2008”不同于以前遇到的“2005”
    路由器wan口连接不上的问题
    Git学习(四)----版本号跳转
    jquery记分牌的插件
    ORACLE 第4节 多表查询
    基于消息机制的异步架构之回调函数注冊
    干货!手把手教你怎样高速了解一个行业--游戏产业概况
  • 原文地址:https://www.cnblogs.com/saintdingspage/p/9908803.html
Copyright © 2011-2022 走看看