CS420 课程笔记 P3 - 计数系统基础和 Hex, Decimal, Binary 进制

文章目录

    • Introduction
    • Inspiration
    • Why base systems
    • Binary & Hex
    • Counting in binary
    • Additional resources

Introduction

笔记作者 tips:这一节是关于进制的讲解,推荐观看原视频或学会二进制的读者跳过这一篇!

本节课将介绍基本的计算机系统,在计算机中数字可能通过这几种进制进行显示:

  • 二进制 Binary 0101 1010 1001 0011 1001 1100 1111 1100
  • 十进制 Decimal 1,519,623,420
  • 十六进制 Hex 5A939CFC

上节课我们见到二进制,现在我们要真正理解二进制和十六进制,学习 game hacking 几乎无法避免学习这样的数字进制系统。如果你要学习机器学习,你需要学习微积分、物理、统计学等等,但我们实际上要容易很多,我们只是再次学习如何计数

Inspiration

The papuan language Bukiyip… has tow different counting systems, one base-4 and another base-3. According to Bukiyip custom, which system you use depends on what objects you are counting.

上面的大致意思是:古代巴布亚新几内亚人的计数方式,会根据不同的计数对象,应用不同的计数方法,就是说,古代人可以熟练使用不同的进制方式,那么作为21世纪的程序工作者也当然可以学会二进制、十六进制

通常我们在十六进制数前面加上 0x,也就是 0x10 实际上等于十进制数字 16

同理,0b10 是二进制数,等于实际上的十进制数 2

当你看到数字 0x10 时,不要相信自己的眼睛,他不是实际上的数字 10 而是 16

Why base systems

为什么要学习二进制和十六进制?

  • Humans had a few systems in use throughout history – base 10 won
  • Computers need to store information as off/on or 0/1

人类使用十进制,而计算机使用二进制,学习二进制的重要性不言而喻。十六进制呢?因为十六进制和二进制之间有一些巧妙的联系,可以方便人类理解和管理二进制技术系统,以及一些历史原因。

为了学习二进制和十六进制,我们要忘记十进制,这是最难的,因为大多数人一生都盯着十进制数字,让我们注意一下如何数数:

  • 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
  • 当数到 10,我们就会回收数字,把10进位,然后再开始 0, 1, 2…
  • 也就是 10, 11, 12…

如果我们发明一个计数系统,给10一个符号,比如A是10,B是11等等,比如:

  • 8, 9, A, B, C…
  • 显然我们不可能给每个数字都发明一个符号,因为数字是无限的
  • 在十六进制中最大到符号 F,那么 0xF => 15,0x1F => 31

此时你应该可以理解:

  • 十进制数字 4294967295
  • 等于二进制数字 11111111111111111111111111111111
  • 等于十六进制数 FFFFFFFF

Binary & Hex

我们尝试把二进制数字以4个一组分割开:

  • F F F F 每个符号对应下面的4个一组
  • 1111 1111 1111 1111

如果我们修改其中的一组:

  • F A F F
  • 1111 1010 1111 1111

那么就会有一个 F 变成 A,十六进制数和4个二进制数之间有很强的相关性。人类无法很好地读取二进制数,而二进制数也不能很好的转换成十进制数,但二进制转换成十六进制是简单的,只需要分成 4个一组的块 即可。

Counting in binary

让我们学习如何用二进制计数:

  • 十进制数 999,如果加上1,会从最后一位开始进位,最终变成 1000
  • 对于二进制数字 01111,也是一样的,开始进位会变成 10000

你可以尝试使用二进制来从 0 数到 15,这样可以很快理解二进制

这里原视频的讲解配合动画,推荐查看原视频

你可以打开计算器,选择程序员模式,来查看这些变化,选择 HEX 输入十六进制,选择 BIN 输入二进制:

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

Additional resources

在上一节中我们知道,计算机里面以八个位 bit 为一组形成一个字节 byte

现在你应该可以理解在计算机内部:

01101000 01100001 01110100

这些二进制数字排布,对应的十六进制和十进制状态了,接下来我们用十六进制代替他们:

01 00 00 01 FF F0 F0 02 80 41 FF B0

日后我们将使用十六进制来看,不太可能用二进制了,除了一些典型的例外

  • 01 00 00 00 使用了 4 byte = 32 bit
  • 74 69 使用了 2 byte = 16 bit

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

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

相关文章

动态规划:路径和子数组问题(C++)

动态规划:路径和子数组问题 路径问题1.不同路径(中等)2.不同路径II(中等)3.下降路径最⼩和(中等)4.地下城游戏(困难) 子数组问题1.最大子数组和(中等&#xf…

无涯教程-JavaScript - MINUTE函数

描述 MINUTE函数返回时间值的分钟。分钟以整数形式给出,范围为0到59。 语法 MINUTE (serial_number)争论 Argument描述Required/OptionalSerial_number 您想要找到的包含分钟的时间。 可以输入时间 作为引号内的文本字符串(如" 6:45 PM") 为十进制数字(如0.7812…

JVM垃圾回收机制和常用算法(简洁版)

垃圾收集 (Garbage Collection,GC) 垃圾收集主要是针对堆和方法区进行。程序计数器、虚拟机栈和本地方法栈这三个区域属于线程私有的,只存在于线程的生命周期内,线程结束之后就会消失,因此不需要对这三个区域进行垃圾回收。 判断一个对象是…

基本介绍——数据挖掘

1.数据挖掘的定义 数据挖掘是采用数学的、统计的、人工智能和神经网络等领域的科学方法,如记忆推理、聚类分析、关联分析、决策树、神经网络、基因算法等技术,从大量数据中挖掘出隐含的、先前未知的、对决策有潜在价值的关系、模式和趋势,并…

基于Springcloud的基础框架,统一gateWay网关鉴权demo,附下载地址

基于Springcloud的基础框架,统一gateWay网关鉴权demo,附下载地址 使用方式: 1、搭建nacos环境,修改对应nacos地址 2、修改mysql地址,导入sql语句 ###框架内容 SpringcloudGatewayJWTNacosFeginmysqlMybatis plus 具体功能 基于…

Swift 周报 第三十六期

文章目录 前言新闻和社区消息称苹果公司和印度财政部官员磋商,扩大在印度的制造产能iPhone 15 Pro 机型新增泰坦灰iPhone 15 全系配 USB-C 苹果拒绝接口和安卓互通 提案正在审查的提案 Swift论坛推荐博文话题讨论关于我们 前言 本期是 Swift 编辑组整理周报的第三十…

为什么良好的客户服务对于成功的企业至关重要

图片来源于:SaleSmartly官网 良好的客户服务是任何成功企业的重要组成部分。提供卓越的客户服务有助于建立客户的信任和忠诚度,从而增加销售额和利润。它还对任何企业的声誉产生积极影响,带来更多客户和更好的口碑推荐。因此,企业…

说说 TCP的粘包、拆包

分析&回答 拆包和粘包是在socket编程中经常出现的情况, 在socket通讯过程中,如果通讯的一端一次性连续发送多条数据包,tcp协议会将多个数据包打包成一个tcp报文发送出去,这就是所谓的粘包。如果通讯的一端发送的数据包超过一…

OJ题库:计算日期到天数转换、打印从1到最大的n位数 、尼科彻斯定理

前言:在部分大厂笔试时经常会使用OJ题目,这里对《华为机试》和《剑指offer》中的部分题目进行思路分析和讲解,希望对各位读者有所帮助。 题目来自牛客网,欢迎各位积极挑战: HJ73:计算日期到天数转换_牛客网 JZ17:打印…

基于单片机的万年历温度无线传输控制系统系统

一、系统方案 本设计采用DS1302采集年月日时分秒,DS18B20采集温度值,按键设置温度报警上下限,实际测量温度低于下限或高于上限,蜂鸣器报警,同时将测量温度上传到蓝牙助手。 二、硬件设计 原理图如下: 三…

一文彻底吃透自动化测试框架所有知识

定义测试自动化 在任何行业中,自动化通常被解释为自动处理流程,而这些流程几乎不需要人工干预。在软件行业,测试自动化意味着使用许可版本或开源的自动化工具对软件应用程序执行各种测试。用技术术语来说,测试自动化框架是一组定制…

22 元类技术(面向切片编程)|ORM的实现|抽象类与接口类

文章目录 前情知识补充hasattr 函数setattr函数getattr函数join 函数 元类技术使用type创建类什么是元类(概念总结)\_\_metaclass\_\_属性使用metaclass 的函数方式进行创建类使用metaclass 的类方式进行创建类 自定义元类 元类实现ORM接口类与抽象类抽象…