Go语言核心编程-运算符和进制转换

news2024/11/18 2:20:16

第 4 章 运算符

4.1 运算符的基本介绍

运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等
运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等

  1. 算术运算符
  2. 赋值运算符
  3. 比较运算符/关系运算符
  4. 逻辑运算符
  5. 位运算符
  6. 其它运算符

4.2 算术运算符

算术运算符是对数值类型的变量进行运算的,比如:加减乘除。在 Go 程序中使用的非常多

4.2.1算术运算符的一览表

在这里插入图片描述

4.2.2案例演示

  • 案例演示算术运算符的使用。
    +, - , * , / , %, ++, – , 重点讲解 /、%
    自增:++
    自减:–
  • 演示 / 的使用的特点
    在这里插入图片描述
  • 演示 % 的使用特点
    /
/ 演示 % 的使用
// 看一个公式 a % b = a - a / b * b
fmt.Println("10%3=", 10 % 3) // =1
fmt.Println("-10%3=", -10 % 3) // = -10 - (-10) / 3 * 3 = -10 - (-9) = -1
fmt.Println("10%-3=", 10 % -3) // =1
fmt.Println("-10%-3=", -10 % -3) // =-1
  • ++ 和 --的使用
    在这里插入图片描述

4.2.3算术运算符使用的注意事项

  1. 对于除号 “/”,它的整数除和小数除是有区别的:整数之间做除法时,只保留整数部分而舍弃
    小数部分。 例如: x := 19/5 ,结果是 3

  2. 当对一个数取模时,可以等价 a%b=a-a/b*b , 这样我们可以看到 取模的一个本质运算。

  3. Golang 的自增自减只能当做一个独立语言使用时,不能这样使用
    在这里插入图片描述

  4. Golang 的++ 和 – 只能写在变量的后面,不能写在变量的前面,即:只有 a++ a-- 没有 ++a
    –a
    在这里插入图片描述

  5. Golang 的设计者去掉 c / java 中的 自增自减的容易混淆的写法,让 Golang 更加简洁,统一。(强
    制性的)

4.2.4课堂练习 1

在这里插入图片描述

4.2.5课堂练习 2

  1. 假如还有 97 天放假,问:xx 个星期零 xx 天
  2. 定义一个变量保存华氏温度,华氏温度转换摄氏温度的公式为:5/9*(华氏温度-100),请求出华氏
    温度对应的摄氏温度
    在这里插入图片描述

4.3 关系运算符(比较运算符)

4.3.1基本介绍

  1. 关系运算符的结果都是 bool 型,也就是要么是 true,要么是 false
  2. 关系表达式 经常用在 if 结构的条件中或循环结构的条件中

4.3.2关系运算符一览图

在这里插入图片描述

4.3.3案例演示

在这里插入图片描述

4.3.4关系运算符的细节说明

细节说明

  1. 关系运算符的结果都是 bool 型,也就是要么是 true,要么是 false。
  2. 关系运算符组成的表达式,我们称为关系表达式: a > b
  3. 比较运算符"=="不能误写成 “=” !!

4.4 逻辑运算符

4.4.1基本介绍

用于连接多个条件(一般来讲就是关系表达式),最终的结果也是一个 bool 值

4.4.2逻辑运算的说明

在这里插入图片描述

4.4.3案例演示

在这里插入图片描述
在这里插入图片描述

4.4.4注意事项和细节说明

  1. &&也叫短路与:如果第一个条件为 false,则第二个条件不会判断,最终结果为 false
  2. ||也叫短路或:如果第一个条件为 true,则第二个条件不会判断,最终结果为 true
  3. 案例演示
    在这里插入图片描述

4.5 赋值运算符

4.5.1基本的介绍

赋值运算符就是将某个运算后的值,赋给指定的变量。

4.5.2赋值运算符的分类

在这里插入图片描述

4.5.3赋值运算的案例演示

案例演示赋值运算符的基本使用。

  1. 赋值基本案例
  2. 有两个变量,a 和 b,要求将其进行交换,最终打印结果
  3. += 的使用案例
  4. 案例
    在这里插入图片描述

4.5.4赋值运算符的特点

  1. 运算顺序从右往左
    在这里插入图片描述
  2. 赋值运算符的左边 只能是变量,右边 可以是变量、表达式、常量值
    在这里插入图片描述
  3. 复合赋值运算符等价于下面的效果
    比如:a += 3 等价于 a = a + 3
    4.5.5面试题
    有两个变量,a 和 b,要求将其进行交换,但是不允许使用中间变量,最终打印结果
var a,b =1,3
	b,a=a,b

另一种写法
在这里插入图片描述

4.6 位运算符

在这里插入图片描述

4.7 其它运算符说明

在这里插入图片描述
举例说明:
在这里插入图片描述
4.7.1课堂案例
案例 1:求两个数的最大值
在这里插入图片描述
案例 2:求三个数的最大值
在这里插入图片描述

4.8 特别说明

在这里插入图片描述
在这里插入图片描述

4.9 运算符的优先级

4.9.1运算符的优先级的一览表

在这里插入图片描述

4.9.2对上图的说明

  1. 运算符有不同的优先级,所谓优先级就是表达式运算中的运算顺序。如右表,上一行运算符总优先于下一行。
  2. 只有单目运算符、赋值运算符是从右向左运算的。
  3. 梳理了一个大概的优先级
    1:括号,++, – 2: 单目运算
    3:算术运算符
    4:移位运算
    5:关系运算符
    6:位运算符
    7:逻辑运算符
    8:赋值运算符
    9:逗号

4.10 键盘输入语句

4.10.1 介绍

在编程中,需要接收用户输入的数据,就可以使用键盘输入语句来获取。InputDemo.go

4.10.2 步骤 :

  1. 导入 fmt 包
  2. 调用 fmt 包的 fmt.Scanln() 或者 fmt.Scanf()
    在这里插入图片描述
    在这里插入图片描述

4.10.3 案例演示:

要求:可以从控制台接收用户信息,【姓名,年龄,薪水, 是否通过考试 】。

  1. 使用 fmt.Scanln() 获取
    在这里插入图片描述
  2. 使用 fmt.Scanf() 获取
    在这里插入图片描述

4.11 进制

对于整数,有四种表示方式:

  1. 二进制:0,1 ,满 2 进 1。
    在 golang 中,不能直接使用二进制来表示一个整数,它沿用了 c 的特点。
  2. 十进制:0-9 ,满 10 进 1。
  3. 八进制:0-7 ,满 8 进 1. 以数字 0 开头表示。
  4. 十六进制:0-9 及 A-F,满 16 进 1. 以 0x 或 0X 开头表示。
    此处的 A-F 不区分大小写
    在这里插入图片描述

4.11.1 进制的图示

在这里插入图片描述
在这里插入图片描述

4.11.2 进制转换的介绍

在这里插入图片描述

4.11.3 其它进制转十进制

在这里插入图片描述

4.11.4 二进制如何转十进制

在这里插入图片描述

4.11.5 八进制转换成十进制示例

在这里插入图片描述

4.11.6 16 进制转成 10 进制

在这里插入图片描述

4.11.7 其它进制转 10 进制的课堂练习

  • 课堂练习:请将
    二进制: 110001100 转成 十进制
    八进制: 02456 转成十进制
    十六进制: 0xA45 转成十进制

4.11.8 十进制如何转成其它进制

在这里插入图片描述

4.11.9 十进制如何转二进制

在这里插入图片描述

4.11.10 十进制转成八进制

在这里插入图片描述

4.11.11 十进制转十六进制

在这里插入图片描述

4.11.12 课堂练习

  • 课堂练习:请将
    123 转成 二进制
    678 转成八进制
    8912 转成十六进制

4.11.13 二进制转换成八进制、十六进制

在这里插入图片描述

4.11.14 二进制转换成八进制

在这里插入图片描述

4.11.15 二进制转成十六进制

在这里插入图片描述

  • 课堂练习
    课堂练习:请将
    二进制:11100101 转成 八进制
    二进制:1110010110 转成 十六进制

4.11.16 八进制、十六进制转成二进制

在这里插入图片描述

4.11.17 八进制转换成二进制

在这里插入图片描述

4.11.18 十六进制转成二进制

在这里插入图片描述

4.12 位运算

4.12.1 位运算的思考题

  1. 请看下面的代码段,回答 a,b,c,d 结果是多少?
func main() {
	var a int = 1 >> 2
	var b int = -1 >> 2
	var c int = 1 << 2
	var d int = -1 << 2
	//a,b,c,d 结果是多少
	fmt.Println("a=", a)
	fmt.Println("b=", b)
	fmt.Println("c=", c)
	fmt.Println("d=", d)
}
  1. 请回答在 Golang 中,下面的表达式运算的结果是:
func main() {
	fmt.Println(2&3)
	fmt.Println(2|3)
	fmt.Println(13&7)
	fmt.Println(5|4) //?
	fmt.Println(-3^3) //?
}

4.12.2 二进制在运算中的说明

二进制是逢 2 进位的进位制,0、1 是基本算符。
现代的电子计算机技术全部采用的是二进制,因为它只使用 0、1 两个数字符号,非常简单方便,易于用电子方式实现。计算机内部处理的信息,都是采用二进制数来表示的。二进制(Binary)数用 0
和 1 两个数字及其组合来表示任何数。进位规则是“逢 2 进 1”,数字 1 在不同的位上代表不同的值,
按从右至左的次序,这个值以二倍递增
在计算机的内部,运行各种运算时,都是以二进制的方式来运行。

4.12.3 原码、反码、补码

在这里插入图片描述

4.12.4 位运算符和移位运算符

  • Golang 中有 3 个位运算
    分别是”按位与&、按位或|、按位异或^,它们的运算规则是:
    按位与& : 两位全为1,结果为 1,否则为 0
    按位或| : 两位有一个为 1,结果为 1,否则为 0
    按位异或 ^ : 两位一个为 0,一个为 1,结果为 1,否则为 0
  • 案例练习
    比如:2&3=? 2|3=? 2^3=?
    在这里插入图片描述
    在这里插入图片描述
  • Golang 中有 2 个移位运算符:
    >>、<< 右移和左移,运算规则:
    右移运算符 >>:低位溢出,符号位不变,并用符号位补溢出的高位
    左移运算符 <<: 符号位不变,低位补 0
  • 案例演示
a := 1 >> 2 // 0000 0001 =>0000 0000 = 0
c := 1 << 2 // 0000 0001 ==> 0000 0100 => 4

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/545447.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

体验联网版 ChatGPT:优点和缺点同样明显,还藏着无限可能

ChatGPT 有点像古希腊的阿喀琉斯&#xff1a;它很强大&#xff0c;却有个致命的弱点——无法联网&#xff0c;这注定了它只能是一个停留在 2021 年的超人。 但很快&#xff0c;我们将等到一个「鱼和熊掌兼得」的时刻。 通过插件集的 Web browsing 功能&#xff0c;ChatGPT 就…

C++每日一练:贝博士的机械零件(补全题目)奇偶排序(巧妙快排)寻因找祖

文章目录 前言一、贝博士的机械零件1、题目2、解法 二、奇偶排序&#xff08;巧用快排&#xff09;三、寻因找祖 前言 今天的题目中寻因找祖最难了&#xff0c;明显的数学题&#xff0c;笔者这数学文盲水平肯定不会&#xff0c;用暴力搞了一波&#xff0c;只有50%。就去考察学…

(二十六)ATP应用测试平台——将一个微服务打包成含skywalking链路追踪的docker镜像

前言 延续前面的章节内容&#xff0c;本节内容我们以ht-atp的springboot应用为例&#xff0c;封装一个包含skywalking链路追踪的微服务docker应用。完成服务调用的链路追踪监控。skywalking采用字节码注入的方式实现代码的无侵入&#xff0c;探针采集数据粒度粗&#xff0c;但…

详解c++STL—容器set/multiset

目录 1、set基本概念 1.1、功能 1.2、本质&#xff1a; 1.3、set和multiset区别 2、set构造和赋值 2.1、功能描述 2.1、构造 2.3、赋值 2.4、示例 3、set大小和交换 3.1、功能描述 3.2、函数原型 3.2、示例 4、set插入和删除 4.1、功能描述 4.2、函数原型 4.3…

YOLO V3 SPP ultralytics 第一节:VOC 的标注文件(xml)转YOLO标注格式(txt)以及如何自定义YOLO数据样本

目录 1. 前言 2. 关于PASCAL VOC数据集xml --> YOLO txt格式 2.1 路径设定 2.2 读取xml 文件的函数 2.3 xml ---> yolo txt 2.4 yolo 的label文件 2.6 结果 2.7 代码 3. 自定义 YOLO 数据集 3.1 预备工作 3.2 打开labelimg 3.3 绘制 代码参考是b站的大佬&…

CNNs: ZFNet之CNN的可视化网络介绍

CNNs: ZFNet之CNN的可视化网络介绍 导言Deconvnet1. Unpooling2. ReLU3. Transpose conv AlexNet网络修改AlexNet Deconv网络介绍特征可视化 导言 上一个内容&#xff0c;我们主要学习了AlexNet网络的实现、超参数对网络结果的影响以及网络中涉及到一些其他的知识点&#xff0…

RedisInsight—Redis可视化工具

到处都是各种redis的可视化工具&#xff0c;但是那个是redis官网推荐的呢。 答案是&#xff1a;RedisInsight。 好用吗&#xff1f;自己看看吧。反正下载是挺烦躁的。 RedisInsight介绍 RedisInsight支持多种操作系统&#xff1a;Linux、Windows和macOS。 RedisInsight支持…

全网最牛最全面的jmeter教程之jmeter对图片验证码的处理

jmeter对图片验证码的处理 在web端的登录接口经常会有图片验证码的输入&#xff0c;而且每次登录时图片验证码都是随机的&#xff1b;当通过jmeter做接口登录的时候要对图片验证码进行识别出图片中的字段&#xff0c;然后再登录接口中使用&#xff1b; 通过jmeter对图片验证码…

【数据结构】C语言实现堆及其应用

二叉树的顺序结构--堆 一、堆的概念与实现堆的概念堆结构定义堆的初始化与销毁堆的插入与向上调整堆的打印、判空、元素个数size、堆顶元素堆的删除与向下调整大根堆与小根堆的写法区别堆的两种建立方式建堆的时间复杂度推导 二、堆的应用堆的应用--topK堆的应用--堆排序优先级…

learn_C_deep_11 (深刻理解整形提升、左移和右移规则、花括号、++和--操作、表达式匹配:贪心算法)

目录 深刻理解整形提升 左移和右移规则 如何理解"丢弃" 一个问题 0x01<<23 的值是多少 花括号 、--操作 表达式匹配&#xff1a;贪心算法 深刻理解整形提升 #include <stdio.h> int main() {char c 0;printf("sizeof(c): %d\n", sizeo…

C++系列之类与对象(上)

&#x1f497; &#x1f497; 博客:小怡同学 &#x1f497; &#x1f497; 个人简介:编程小萌新 &#x1f497; &#x1f497; 如果博客对大家有用的话&#xff0c;请点赞关注再收藏 &#x1f31e; 类 类的概念 C是基于面向对象的&#xff0c;是对象与对象之间的交互完成的&am…

docker构建PHP环境

docker构建PHP环境 文章目录 docker构建PHP环境下载镜像构建本地目录创建容器配置补充命令解释设置docker启动时启动容器 下载镜像 # php 镜像 docker pull php:7.4-fpm # nginx镜像 docker pul nginx:lates # 检查下载的镜像 docker images构建本地目录 本次构建是在win系统…

怎么查营业执照经营范围

怎么查营业执照经营范围 1.到企业公司所在地查询。一般工商局都要求公司将营业执照正本悬挂于企业办公室醒目位置,在公司工商营业执照正副本中均有描述。 2.登陆国家工商管理网站查询。可以登陆开具发票单位所在的工商行政管理局网站,输入企业名称就可以查询法人、企业类型、经…

第七章 中断

中断是什么&#xff0c;为什么要有中断 并发是指单位时间内的累积工作量。 并行是指真正同时进行的工作量。 一个CPU在一个时间只能执行一个进程&#xff0c;任何瞬间任务只在一个核心上运行。 而CPU外的设备是独立于CPU的&#xff0c;它与CPU同步运行&#xff0c;CPU抽出一点…

2023年十大最佳黑客工具!

​用心做分享&#xff0c;只为给您最好的学习教程 如果您觉得文章不错&#xff0c;欢迎持续学习 在今年根据实际情况&#xff0c;结合全球黑客共同推崇&#xff0c;选出了2023年十大最佳黑客工具。 每一年&#xff0c;我都会持续更新&#xff0c;并根据实际现实情况随时更改…

山西煤矿电子封条算法 opencv

山西煤矿电子封条通过pythonopencv网络模型AI视觉技术&#xff0c;pythonopencv算法模型实现对出入井人监察控制、调度室空岗识别、生产作业状态、摄像头遮挡、挪动角度识别、货运车辆出矿识别等。 OpenCV的全称是Open Source Computer Vision Library&#xff0c;是一个跨平台…

CleanMyMac X如何下载解锁完整版本?

这是一款很受到mac用户喜爱的清理软件。不仅清理文件的步骤十分简单&#xff0c;电脑小白用户也可以高效清理Mac电脑。作为一款全方位保护电脑的软件&#xff0c;CleanMyMac已经不满足于只做简单的Mac清理工具&#xff0c;而是为mac用户提供更多的实用功能&#xff1a;优化系统…

机器学习随记(7)——bootstrap、bagging、boosting、随机森林

bootstrap&#xff1a;是一种统计方法&#xff0c;也是一种思想&#xff0c;简单说就是在所有样本集中进行有放回地抽样&#xff0c;抽取n个样本。如果不清楚样本的分布&#xff0c;bootstrap是一种合适的方法。 bagging&#xff1a;Bagging方法在训练过程中&#xff0c;各基分…

windows提权

权限提升概述 1、提权介绍 权限提升&#xff1a;攻击者通过安全漏洞把获取到的受限制的低权限用户突破限制&#xff0c;提权至高权限的管理员用户&#xff0c;从而获取对整个系统的控制权 windows&#xff1a;user --> system/administrator linux&#xff1a;user --&g…

ASEMI代理Infineon英飞凌IPB072N15N3G原厂MOS管

编辑-Z IPB072N15N3G参数描述&#xff1a; 型号&#xff1a;IPB072N15N3G 持续漏极电流&#xff1a;100A 脉冲漏极电流&#xff1a;400A 雪崩能量&#xff0c;单脉冲&#xff1a;780 mJ 栅极-源极电压&#xff1a;20V 功率耗散&#xff1a;300W 操作和储存温度&#xf…