计算机进制的介绍

一.进制介绍

对于整数,有四种表示方式:
1)二进制:0,1,满2进1。

  在golang中,不能直接使用二进制来表示一个整数,它沿用了c的特点。

  参考:Go语言标准库文档中文版 | Go语言中文网 | Golang中文社区 | Golang中国

//赋值运算符的使用演示var c int = 5//二进制输出fmt.Printf("%b", c)

2)十进制:0-9,满10进1。2)
3)八进制:0-7,满8进1.以数字o开头表示。

var a int = 9
//八进制输出
fmt.Printf("%o\n", a)

4)十六进制:0-9及A-F,满16进1.以0x或0X开头表示此处的A-F不区分大小写。如:0x21AF+1=0X21B0

var d int = 19
//十六进制输出
fmt.Printf("0X%X\n", d)

二.进制的图示

三.进制的转换

进制的转换介绍

第一组(其他进制转十进制)

1)二进制转十进制

规则:从最低位开始(右边的),将每个位上的数提取出来,乘以2的(位数-1)次方,然后求和。

案例:请将二进制:1011转成十进制的数

1011=1*1+1*2+0*2*2+1*2*2*2

2)八进制转十进制

规则:从最低位开始(右边的),将每个位上的数提取出来,乘以8的(位数-1)次方,然后求和。

案例:请将八进制:0123转成十进制的数

0123=3*1+2*8+1*8*8+0*2*2*2=83

3)十六进制转十进制

规则:从最低位开始(右边的),将每个位上的数提取出来,乘以16的(位数-1)次方,然后求和。

案例:请将八进制:0x34A转成十进制的数

34A=10*1+4*16+3*16*16=842

4)示意图

第二组(十进制转其它进制)

1)十进制转二进制

规则:将该数不断除以2,直到商为0为止,然后将每步得到的余数倒过来,就是对应的二进制。

案例:请将156转成二进制

2)十进制转八进制

规则:将该数不断除以8,直到商为0为止,然后将每步得到的余数倒过来,就是对应的二进制。

案例:请将156转成二进制

3)十进制转十六进制

规则:将该数不断除以16,直到商为0为止,然后将每步得到的余数倒过来,就是对应的十六进制。

案例:请将356转成十六进制

4)示意图

第三组(二进制转其它进制)

1)二进制转八进制

规则:将二进制数每三位一组(从低位开始组合),转成对应的八进制数即可。

案例:请将二进制:11010101转成八进制

11010101=3+2+5=325

2)二进制转十六进制

规则:将二进制数每四位一组(从低位开始组合),转成对应的十六进制数即可。

案例:请将二进制:11010101转成十六进制

11010101=13+5=0xD5

3)示意图

第四组(其他进制转二进制)

1)八进制转二进制

规则:将八进制数每1位,转成对应的一个3位的二进制数即可。

案例:请将0237转成二进制

0237=10011111

2)十六进制转二进制

规则:将十六 进制数每1位,转成对应的一个4位的二进制数即可。

案例:请将0237转成二进制

0x237=1000110111

3)示意图

四.位运算的思考题

func main(){var a int = 1>>2 var b int = -1>>2var c int = 1<<2var 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.网上对原码,反码,补码的解释过于复杂,这里精简几句话:

对于有符号的而言:

1)二进制的最高位是符号位:0表示正数,1表示负数

1===》[0000 0001] -1===》[1000 0001]

2)正数的原码,反码,补码都一样

1===》原码 [0000 0001] 反码 [0000 0001] 补码 [0000 0001]

3)负数的反码=它的原码符号位不变,其他位取反(0->1,1->0)

1===》原码 [0000 0001] 反码 [0000 0001] 补码 [0000 0001]

-1===》原码 [1000 0001] 反码 [1111 1110]

4)负数的补码=它的反码+1

-1===》反码 [1111 1110] 补码 [1111 1111]

5)0的反码,补码都是0

6)在计算机运行时,都是以补码的方式来运行的

2.位运算符和移位运算符

Golang中有3个位运算:分别是”按位与&、按位或1、按位异或^,

它们的运算规则:

  • 按位与& :两位全为1,结果为1,否则为0

  • 按位或I :两位有一个为1,结果为1,否则为0

  • 按位异或^ :两位一个为0,一个为1,结果为1,否则为0 比如:2&3=? 213=? 2^3=? -2^2

2&3

2的补码:[0000 0010]

3的补码:[0000 0011]

2&3 [0000 0010] =>2

2|3

2的补码:[0000 0010]

3的补码:[0000 0011]

2|3 [0000 0010] =>3

2^3

2的补码:[0000 0010]

3的补码:[0000 0011]

2^3 [0000 0001] =>1

-2^2

-2的补码:[1111 1110]

2的补码: [0000 0010]

-2^2 补码 [1111 1100] =>反码[1111 1011] =>原码[1000 0100] =>-4

3.Golang中有2个移位运算符:

>>、<<右移和左移,运算规则: 右移运算符 >>:低位溢出,符号位不变,并用符号位补溢出的高位

左移运算符 <<:符号位不变,低位补0

a:=1>>2 // 0000 0001 ---》0000 0000 ---》0

c:=1<<2 // 0000 0001 ---》0000 0100 ---》4

正数的原码和补码一样,不用在看补码了,运算结果为4

若-1,则要推导出补码,然后在还原到原码

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

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

相关文章

嵌入式 linux Git常用命令 抽补丁 打补丁

Git常用命令 为什么要学习git呢&#xff1f;我相信刚入门的小伙伴敲打肯定碰到过这种玄学问题&#xff0c;我明明刚刚还能用的代码&#xff0c;后面不知道咋的就不能用了&#xff0c;所以每次你调出一个功能点以后都会手动复制一份代码防止出问题&#xff0c;时间一长发现整个…

Transformers参数高效微调之LoRA

简介 LoRA: Low-Rank Adaptation of Large Language Models是微软研究人员为处理微调大语言模型的问题而引入的一项新技术。具有数十亿个参数的强大模型&#xff08;例如 GPT-3&#xff09;为了适应特定任务或领域而进行微调的成本非常高。LoRA 建议冻结预先训练的模型权重并注…

【原生js案例】如何让你的网页实现图片的按需加载

按需加载&#xff0c;这个词应该都不陌生了。我用到你的时候&#xff0c;你才出现就可以了。对于一个很多图片的网站&#xff0c;按需加载图片是优化网站性能的一个关键点。减少无效的http请求&#xff0c;提升网站加载速度。 感兴趣的可以关注下我的系列课程【webApp之h5端实…

博弈论1:拿走游戏(take-away game)

假设你和小红打赌&#xff0c;玩“拿走游戏”&#xff0c;输的人请对方吃饭.... 你们面前有21个筹码&#xff0c;放成一堆&#xff1b;每轮你或者小红可以从筹码堆中拿走1个/2个/3个&#xff1b;第一轮你先拿&#xff0c;第二轮小红拿&#xff0c;你们两个人交替进行;拿走筹码堆…

【论文阅读】IC-Light(ICLR 2025 满分论文)

Scaling In-the-Wild Training for Diffusion-based Illumination Harmonization and Editing by Imposing Consistent Light Transport 原始论文&#xff1a;https://openreview.net/pdf?idu1cQYxRI1H 补充材料&#xff1a;https://openreview.net/attachment?idu1cQYxRI1H&…

代码随想录 leetcode-数据结构刷题笔记

文章目录 一、数组1.1 二分查找 1.1.1 二分查找 1.1.2 搜索插入位置1.1.3 排序数组中查找元素第一和最后一个位置1.1.4 x的平方根 1.1.5 有效的完全平方数 1.2 快慢指针 1.2.1 移除元素 1.2.2 删除有序数组中的重复项 1.2.3 移动0 1.2.4 比较含退格的字符串 1.2.5 有序数组的平…

Fastapi教程:使用 aioredis 连接池执行Redis 的高效异步操作

在构建高性能的 Web 应用时&#xff0c;缓存系统是一个至关重要的组成部分。Redis 是最常见的缓存系统之一&#xff0c;它提供了高效的存储与读取机制。然而&#xff0c;在与 Redis 进行频繁交互时&#xff0c;创建和销毁连接可能会成为瓶颈。为了优化这一问题&#xff0c;我们…

激活函数-swiGLU

swiGLU&#xff08;Switch Gated Linear Unit&#xff09;简介 swiGLU 是一种改进的激活函数模块&#xff0c;主要用于深度学习中的 Transformer 模型和其他神经网络架构。它在 GLU&#xff08;Gated Linear Unit&#xff09; 的基础上进行了修改&#xff0c;以提升模型的表现…

Unix 传奇 | 谁写了 Linux | Unix birthmark

注&#xff1a;本文为 “左耳听风”陈皓的 unix 相关文章合辑。 皓侠已走远&#xff0c;文章有点“年头”&#xff0c;但值得一阅。 文中部分超链已沉寂。 Unix 传奇 (上篇) 2010 年 04 月 09 日 陈皓 了解过去&#xff0c;我们才能知其然&#xff0c;更知所以然。总结过去…

记一个framebuffer显示混乱的低级错误

记一个framebuffer显示混乱的低级错误 由于framebuffer的基础知识不扎实&#xff0c;这个任务上我多卡了两天&#xff0c;差点把我搞死&#xff0c;于此记录为后鉴。 打算用awtk做一个多进程项目&#xff0c;计划把framebuffer的内容通过websocket输出到浏览器上去显示画面, …

常用的前端框架介绍

在前端开发中&#xff0c;有许多流行的框架能够帮助开发者更高效地构建用户界面和交互 1. React&#xff1a; • React是一个由Facebook开发的JavaScript库&#xff0c;用于构建用户界面。 • 它使用组件化的思想&#xff0c;将UI拆分成可复用的组件&#xff0c;每个组件都有自…

Kaggler日志-Day4

进度24/12/14 昨日复盘&#xff1a; Pandas课程完成 Intermediate Mechine Learning2/7 今日记录&#xff1a; Intermediate Mechine Learning之类型变量 读两篇讲解如何提问的文章&#xff0c;在提问区里发起一次提问 实战&#xff1a;自己从头到尾首先Housing Prices Compe…

【21天学习AI底层概念】day5 机器学习的三大类型不能解决哪些问题?

机器学习的三大类型——监督学习、无监督学习和强化学习&#xff0c;虽然可以应用于许多问题&#xff0c;但并非所有问题都能通过这些方法有效解决。每种类型的机器学习都有其局限性&#xff0c;具体如下&#xff1a; 1. 监督学习 (Supervised Learning) 监督学习是通过训练数…

【常考前端面试题总结】---2025

React fiber架构 1.为什么会出现 React fiber 架构? React 15 Stack Reconciler 是通过递归更新子组件 。由于递归执行&#xff0c;所以更新一旦开始&#xff0c;中途就无法中断。当层级很深时&#xff0c;递归更新时间超过了 16ms&#xff0c;用户交互就会卡顿。对于特别庞…

二三(Node2)、Node.js 模块化、package.json、npm 软件包管理器、nodemon、Express、同源、跨域、CORS

1. Node.js 模块化 1.1 CommonJS 标准 utils.js /*** 目标&#xff1a;基于 CommonJS 标准语法&#xff0c;封装属性和方法并导出*/ const baseURL "http://hmajax.itheima.net"; const getArraySum (arr) > arr.reduce((sum, item) > (sum item), 0);mo…

Java爬虫设计:淘宝商品详情接口数据获取

1. 概述 淘宝商品详情接口&#xff08;如Taobao.item_get&#xff09;允许开发者通过编程方式&#xff0c;以JSON格式实时获取淘宝商品的详细信息&#xff0c;包括商品标题、价格、销量等。本文档将介绍如何设计一个Java爬虫来获取这些数据。 2. 准备工作 在开始之前&#x…

LeetCode-hot100-73

https://leetcode.cn/problems/largest-rectangle-in-histogram/description/?envTypestudy-plan-v2&envIdtop-100-liked 84. 柱状图中最大的矩形 已解答 困难 相关标签 相关企业 给定 n 个非负整数&#xff0c;用来表示柱状图中各个柱子的高度。每个柱子彼此相邻&#x…

深度学习中损失函数(loss function)介绍

深度学习中损失函数(loss function)介绍 ​ 在深度学习的宏伟城堡中&#xff0c;损失函数扮演着国王的角色&#xff0c;它决定了模型训练的方向和目标。损失函数&#xff0c;也被称为代价函数&#xff0c;是衡量模型预测与实际结果之间差异的函数。在深度学习的训练过程中&…

【docker】springboot 服务提交至docker

准备docker &#xff08;不是docker hub或者harbor&#xff0c;就是可以运行docker run的服务&#xff09;&#xff0c;首先确保docker已经安装。 本文以linux下举例说明&#xff1a; systemctl stats docker ● docker.service - Docker Application Container EngineLoaded…

【新版】阿里云ACP云计算题库及答案解析

阿里云ACO云计算考试提醒都是选择题&#xff0c;70道单选题30道单选题&#xff0c;聪明的小伙伴都知道刷题备考加深记忆&#xff0c;给大家分享一波阿里云ACP云计算题库及答案&#xff0c;希望对大家顺利拿到阿里云ACP云计算高级工程师证书有所帮助&#xff01; 1、设计云上架…