计算机进制的介绍

news2024/12/18 8:10:43

一.进制介绍

对于整数,有四种表示方式:
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>>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.网上对原码,反码,补码的解释过于复杂,这里精简几句话:

对于有符号的而言:

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.coloradmin.cn/o/2261486.html

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

相关文章

3D Gaussian Splatting for Real-Time Radiance Field Rendering-简洁版

1. 研究背景与问题 传统的3D场景表示方法&#xff0c;如网格和点云&#xff0c;适合GPU加速的光栅化操作&#xff0c;但缺乏灵活性。而基于神经辐射场&#xff08;NeRF&#xff09;的表示方式&#xff0c;尽管质量高&#xff0c;但需要高成本的训练和渲染时间。此外&#xff0…

用ue5打开网址链接

需要用到 Launch URL 这个函数 字面意思就是打开填写的链接网页 这里填写的是百度&#xff0c;按下Tab键后就会打开百度的网页

电脑为什么会提示“msvcr120.dll缺失”?“找不到msvcr120.dll文件”要怎么解决?

电脑故障排查指南&#xff1a;揭秘“msvcr120.dll缺失”的真相与解决方案 在软件开发与日常维护的广阔天地里&#xff0c;遇到系统报错或文件缺失的情况可谓家常便饭。今天&#xff0c;我将带领大家深入探讨一个常见的系统提示——“msvcr120.dll缺失”&#xff0c;并揭秘其背…

Java:集合(List、Map、Set)

文章目录 1. Collection集合1-1. 迭代器遍历方式1-2. 通过for循环进行遍历1-3. forEach遍历 2. List集合2-1. ArrayList底层实现原理2-2. LinkedList底层实现原理 3. Set集合3-1. HashSet 底层实现3-2. LinkedHashSet 底层实现3-3. TreeSet 4. Collection集合->总结5. Map集…

4_使用 HTML5 Canvas API (3) --[HTML5 API 学习之旅]

4_使用 HTML5 Canvas API (3) --[HTML5 API 学习之旅] 1.缩放 canvas 对象 在 <canvas> 中缩放对象可以通过 scale 方法来实现。这个方法会根据提供的参数对之后绘制的所有内容进行缩放。下面是两个具体的示例&#xff0c;展示如何使用 scale 方法来缩放 canvas 上的对…

嵌入式驱动开发详解18(USB驱动开发)

文章目录 前言USBUSB简介USB信号线USB控制规格 USB—HUBUSB—HUB原理USB—HUB电路 USB—OTGUSB—OTG原理USB—OTG电路 USB协议后续参考文献 前言 该专栏主要是讲解嵌入式相关的驱动开发&#xff0c;但是由于部分模块的驱动框架过于复杂&#xff0c;其内容量不是一个人能完成的…

ubuntu监测硬盘状态

安装smartmontools smartctl -l error /dev/sdk smartctl -i /dev/sda lshw -class disk smartctl -H /dev/sd 结果1&#xff1a; 结果2&#xff1a;PASSED&#xff0c;这表示硬盘健康状态良好 smartctl -a /dev/sdb sdk lsblk blkid 测试写入速度 time dd if/dev/zero of…

华为云联合中国信通院发布首个云计算智能化可观测性能力成熟度模型标准

2024年12月3日&#xff0c;由全球数字经济大会组委会主办&#xff0c;中国信息通信研究院&#xff08;以下简称“中国信通院”&#xff09;、中国通信企业协会承办的2024全球数字经济大会云AI计算国际合作论坛在北京成功召开。本次会议中&#xff0c;华为云联合中国信通院等单位…

Stable Diffusion 提示词语法

1.提示词基础 1.提示词之间用英文逗号,分隔 2.提示词之间是可以换行的 3.权重默认为1,越靠前权重越高 4.数量控制在75个单位以内 2.提示词各种符号的意义 2.1 ()、[]、{}符号 权重值()小括号[]中括号{}大括号默认1111层()1.1[]0.9{}1.052层(()) 1.121.21[[]]0.920.81{{}}1.…

CMake 保姆级教程(上)

整理自 视频 【CMake 保姆级教程【C/C】】 https://www.bilibili.com/video/BV14s4y1g7Zj/?p5&share_sourcecopy_web&vd_source6eb8f46d194c5ef9f89d3331f623a9c3 1、cmake简介 源文件&#xff08;.cpp / .c&#xff09;要经过 工具链 1.1 工具链 1、预处理&#…

[计算机网络]唐僧的”通关文牒“NAT地址转换

1.NAT&#xff1a;唐僧的通关文牒 在古老的西游记中&#xff0c;唐僧师徒四人历经九九八十一难&#xff0c;终于取得了真经。然而&#xff0c;他们并不是一开始就获得了通关文牒&#xff0c;而是经过了重重考验&#xff0c;最终得到了国王的认可&#xff0c;才顺利通过了各个关…

vscode设置终端代理

转载请标明出处&#xff1a;小帆的帆的博客 设置终端代理 修改项目的.vscode/settings.json {"terminal.integrated.env.windows": {"http_proxy": "http://127.0.0.1:7890","https_proxy": "http://127.0.0.1:7890"}, }…

java后端环境配置

因为现在升学了&#xff0c;以前本来想毕业干java的&#xff0c;很多java的环境配置早就忘掉了&#xff08;比如mysql maven jdk idea&#xff09;&#xff0c;想写个博客记录下来&#xff0c;以后方便自己快速搭建环境 JAVA后端开发配置 环境配置jdkideamavenMySQLnavicate17…

云计算HCIP-OpenStack03

书接上回&#xff1a; 云计算HCIP-OpenStack02-CSDN博客 10.KeyStone keystone-Openstack&#xff0c;IAM服务&#xff08;统一身份认证&#xff09;-云服务 建议先去了解Hadoop&#xff08;大数据生态系统&#xff09;中的kerberos&#xff08;LDAPkerberos的鉴权机制&#xf…

.Net WebAPI(一)

文章目录 项目地址一、WebAPI基础1. 项目初始化1.1 创建简单的API1.1.1 get请求1.1.2 post请求1.1.3 put请求1.1.4 Delete请求 1.2 webapi的流程 2.Controllers2.1 创建一个shirts的Controller 3. Routing3.1 使用和创建MapControllers3.2 使用Routing的模板语言 4. Mould Bind…

【Flink-scala】DataStream编程模型之状态编程

DataStream编程模型之状态编程 参考&#xff1a; 1.【Flink-Scala】DataStream编程模型之数据源、数据转换、数据输出 2.【Flink-scala】DataStream编程模型之 窗口的划分-时间概念-窗口计算程序 3.【Flink-scala】DataStream编程模型之窗口计算-触发器-驱逐器 4.【Flink-scal…

Gitlab服务管理和仓库项目权限管理

Gitlab服务管理 gitlab-ctl start # 启动所有 gitlab 组件&#xff1b; gitlab-ctl stop # 停止所有 gitlab 组件&#xff1b; gitlab-ctl restart # 重启所有 gitlab 组件&#xff1b; gitlab-ctl status …

SCAU期末笔记 - Linux系统应用与开发教程样卷解析(2024版)

我真的不理解奥&#xff0c;为什么会有给样卷不自带解析的&#xff0c;对答案都没得对&#xff0c;故整理一篇 样卷1 一、选择题 1、为了遍历shell脚本调用时传入的参数&#xff0c;需要在shell脚本中使用_____。 A.$#表示参数的个数B.S表示所有参数C.$0表示脚本名D.$1表示…

学习threejs,区域光THREE.AreaLight效果

&#x1f468;‍⚕️ 主页&#xff1a; gis分享者 &#x1f468;‍⚕️ 感谢各位大佬 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍⚕️ 收录于专栏&#xff1a;threejs gis工程师 文章目录 一、&#x1f340;前言1.1 ☘️THREE.AreaLight 区域光 二…

RabbitMQ消息队列的笔记

Rabbit与Java相结合 引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId> </dependency> 在配置文件中编写关于rabbitmq的配置 rabbitmq:host: 192.168.190.132 /…