• 数学运算


    运算类型
    数学运算
    逻辑运算 / 比较运算
    位运算

    整型和浮点型转化

     1 //整型转浮点型(int ---> float64)
     2 
     3 package main
     4 
     5 import "fmt"
     6 
     7 func main() {
     8     var a = 123
     9     fmt.Printf("a的类型是%T a的值是%v
    ", a, a)  //a的类型是int a的值是123
    10     b := float64(a)                              //转换
    11     fmt.Printf("b的类型是%T b的值是%v
    ", b, b)  //b的类型是float64 b的值是123  123代表123.0 虽然.0没有写.
    12 
    13 }
     1 //浮点型转整型(float64 ---> int)
     2 
     3 package main
     4 
     5 import "fmt"
     6 
     7 func main() {
     8     var a = 123.45
     9     fmt.Printf("a的类型是%T a的值是%v
    ", a, a)  //a的类型是float64 a的值是123.45
    10     b := int64(a)                                //转换
    11     fmt.Printf("b的类型是%T b的值是%v
    ", b, b)  //b的类型是int64 b的值是123
    12 
    13 }

    基础数学运算

     1 //基本数学运算
     2 //整型 / 整型 = 整型            如: 10/3 =3 
     3 //浮点型 / 浮点型 = 浮点型      如: 10.0/3.0=3.3333333333333335
     4 
     5 
     6 
     7 package main
     8 
     9 import "fmt"
    10 
    11 func main() {
    12 
    13     fmt.Println(10 + 3)         //加法
    14     fmt.Println(10 - 3)         //减法
    15     fmt.Println(10 * 3)         //乘法
    16     fmt.Println(10 / 3)         //除法
    17     fmt.Println(10 % 3)         //求模,求余
    18     fmt.Println(((1+2)*3/4)%5)  //复杂的四则运算,括号代表优先计算
    19 
    20 }

    高级数学运算

     1 package main
     2 
     3 import (
     4     "fmt"
     5     "math"
     6 )
     7 
     8 func main() {
     9 
    10     fmt.Println(math.Round(3.4))                    //  四舍五入
    11     fmt.Println(math.Floor(3.99))                   // 四舍五入 纯舍,不管小数是多少都舍去.
    12     fmt.Println(math.Ceil(3.11))                    // 四舍五入 纯入,不管小数是多少都进一位.
    13     fmt.Println(math.Abs(-3.4))                     //  绝对值
    14     fmt.Println(math.Pow(2, 3))                     // 2的三次方,三次幂 2*2*2
    15     fmt.Println(math.Sqrt(9))                       // 9的开方,平方根
    16     fmt.Println(math.Pi)                            // Π 3.1415926
    17     fmt.Println(math.Sin((30.0 / 180) * math.Pi))   // 三角函数,正旋
    18     fmt.Println(math.Asin((30.0 / 180) * math.Pi))  // 反三角函数,正旋
    19     fmt.Println(math.Cos((30.0 / 180) * math.Pi))   // 三角函数,余旋
    20     fmt.Println(math.Tan((30.0 / 180) * math.Pi))   // 三角函数,正切
    21 
    22 }

    比较运算

     1 //返回数值是True/False
     2 
     3 package main
     4 
     5 import "fmt"
     6 
     7 func main() {
     8     fmt.Println(3 > 4)        //大于
     9     fmt.Println(3 >= 4)        //大于等于
    10     fmt.Println(3 < 4)        //小于
    11     fmt.Println(3 <= 4)        //小于等于
    12     fmt.Println(3 == 4)        //等于
    13     fmt.Println(3 != 4)        //不等于
    14 }

    逻辑运算

     1 package main
     2 
     3 import "fmt"
     4 
     5 func main() {
     6 
     7     fmt.Println(true && false) //与  俩者必须都ok 才ok
     8     fmt.Println(true || false) //或  只要有一个ok,就ok
     9     fmt.Println(!false)        //非  你ok 结果就不ok
    10     
    11 }

    位运算

    int  是有符号的
    uint 是无符号的
    
    1. 按位与
    
    //12位与10
    //10进制转2进制,双方都为1 结果就为1 
      12 = 1100 
      10 = 1010 
      
        1100
      & 1010
      --------
        1000
       
    //2进制转10进制
     1000 =  8
     
    
    //代码实现:
    
    package main
    
    import "fmt"
    
    func main() {
    
    fmt.Println(12 & 10) //8
    
    }
    3. 按位异或
    
    //12位或10
    //10进制转2进制,只要俩个结果不一样, 结果就为1 
      12 = 1100 
      10 = 1010 
      
        1100
      & 1010
      --------
        0110
       
    //2进制转10进制
     0110 =  14
     
     
    
    //代码实现:
    package main
    
    import "fmt"
    
    func main() {
    
    fmt.Println(12 ^ 10) //6
    
    }
    4. 移位运算
    
      12 = 1100 
      
      如果12 是int类型  int 是8字节。
      0000 1100 <--- 左移动2位
      0011 0000  --  结果是48
    
      
    //左移2位,代码实现:
    
    package main
    
    import "fmt"
    
    func main() {
    
        var a int = 12
            fmt.Println(a << 2) //48
    
    }
    01 有符号向左移位
    
    package main
    
    import "fmt"
    
    func main() {
    
        //uint 无符号位 没这个问题
        // int 有符号位 当最高为1 需要改变正负数。
    
      var a int = 12
    
        //0000 1100
        fmt.Println(a << 2)  //0011 0000
        fmt.Println(a << 3)  //0110 0000 符号位第一位是0代表是整数。
    
        // 符号位为1,是负数,它是一个补码,减一取反得到源码(
        fmt.Println(a << 4)  //1100 0000 -1 = 1011 1111 取反 0100 0000 = 192
        fmt.Println(a << 5)  //1000 0000
    
    
    
    
        移动5位会触碰边界,丢失一位
        fmt.Println(a << 5)
    
        0000 1100 <-- 5位
        1000 0000
    
    
    
    
    }
    
     
  • 相关阅读:
    Spread Studio中文支持图解
    C#反射实例No.1
    关于XML序列化的简单例子
    将数据结构类型序列化和反序列化(BinaryFormatter类)
    获取计算机名称,IP,MAC地址
    原始套接字发送自定义IP包
    IP包首部格式
    struct和byte[]相互转换(用Marshal类实现)
    图片保存到数据库和从数据库读取图片并显示(C#)
    单词分析器源码
  • 原文地址:https://www.cnblogs.com/chaoyangxu/p/11798985.html
Copyright © 2020-2023  润新知