【C++ 重要知识点总结】进制与编码

news2024/12/28 17:58:26

1 进位计数

数制

  • 2进制----字面量0b
  • 8进制----字面量0
  • 10进制—无
  • 16进制0x-字面量0x

数制转化

  • r进制数转化成十进制
    I = a n − 1 × r n − 1 + ⋯ + a 0 × r 0 I = a_{n-1}\times r^{n-1} + \cdots + a_0 \times r^0 I=an1×rn1++a0×r0
  • 十进制整数转化r进制数——除r取余法
    I r = a n − 1 × r n − 1 + ⋯ + a 0 × r 0 r + a 0 × r 0 r \frac Ir=\frac{a_{n-1}\times r^{n-1}+ \cdots + a_0 \times r^0}{r} + \frac {a_0 \times r^0}{r} rI=ran1×rn1++a0×r0+ra0×r0
  • 十进制小数转化r进制数——乘r取整法
    f = a − 1 × r − 1 + a − ( m − 1 ) × r − ( m − 1 ) + a − m × r − ( m − 1 ) f = a_{-1} \times r^{-1} + a_{-(m-1)} \times r^{-(m-1)} + a_{-m} \times r^{-(m-1)} f=a1×r1+a(m1)×r(m1)+am×r(m1)

为什么十进制相对其他进制来说特殊,因为我们在计算的时候,加减乘除,全部都使用十进制的法则,所以十进制计算表达起来更简单。

2 数值编码

  • 2 n − 1 2^{n-1} 2n1表示最高位是1
  • 2 n 2^n 2n表示最高位的溢出位为1

原码

( X ) y = { X 0 ≤ X < 2 n − 1 2 n − 1 + ∣ X ∣ − 2 n − 1 < X ≤ 0 (X)_y= \left\{ \begin{array}{lr} X & 0 \leq X < 2^{n-1}\\ 2^{n-1} + |X| & -2^{n-1} < X \leq 0 \end{array} \right. (X)y={X2n1+X0X<2n12n1<X0

  • 关系说明: 原码就是符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值.

反码

( X ) f = { X 0 ≤ X < 2 n − 1 2 n − 1 − ∣ X ∣ − 2 n − 1 < X ≤ 0 (X)_f= \left\{ \begin{array}{lr} X & 0 \leq X < 2^{n-1}\\ 2^{n}-1 - |X| & -2^{n-1} < X \leq 0 \end{array} \right. (X)f={X2n1X0X<2n12n1<X0

  • 关系说明: 对于正数,反码等于补码;对于负数,反码数值位等于原码数值位按位取反。

补码

( X ) b = { X 0 ≤ X < 2 n − 1 2 n − ∣ X ∣ − 2 n − 1 < X ≤ 0 (X)_b= \left\{ \begin{array}{lr} X & 0 \leq X < 2^{n-1}\\ 2^{n} - |X| & -2^{n-1} < X \leq 0 \end{array} \right. (X)b={X2nX0X<2n12n1<X0

  • 关系说明: 为了满足数值计算,使得正数负数能够在同一的编码下进行加减计算。正数的机器数,原码,反码,补码,都是在固定字长下讨论的负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1。机器中只有加法而没有减法。

说明

  • 使用补码的原因:在二进制层面负数与整数可以直接相加
  • 如果使用反码。正负数数值部分是绝对值的相加,负数加一个整数反而会变更小。数值部分增大,符号位不变,是一个更小的负数。
  • 为了使负数数值位的大小与负数的大小一致,进行了反向映射,即取反操作。这样负数和正数就能直接进行数值位的加减法了。
  • 如果使用原码,存在一个问题,会包含两个0.+0和-0。为了避免重复,在补码中,-0,数值位最少,表示最小的负数。
  • 可以从形式上理解。补码的正数和负数的数值位。都是小的小,大的大。为了遵循数值位的加法操作。

在这里插入图片描述

浮点数

规格化数:
e q = ( − 1 ) s × 2 E × 1. f eq = (-1)^s \times 2^E \times 1.f eq=(1)s×2E×1.f
s-1位符号位,E-8位指数位,f-23位小数位。提供了24位的小数(二进制)小数的精度,-126~127的指数次(二进制)范围。

3 字符编码

西文字符

ASCII 使用7位而金子编码,0~127等128个字符

汉字字符

包括输入码、字形码、国标码、机内码

汉字机内码 = 汉字国标码 + 8080H = 区位码 + A0A0H

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

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

相关文章

日志系统:一条SQL更新语句是如何执行的

知识粗粮 为什么mysql 8 把缓存给取消了&#xff1f;&#xff08;在这里我不咋说&#xff0c;很简单&#xff0c;自己去百度&#xff09; mysql 可以回复到半个月内的任意一秒的状态 sql的执行链路&#xff08;8把查询缓存彻底给搞掉了呜呜呜&#xff09; 进入正题 下面我们从…

MyBatis-Flex 是什么(一个优雅的MyBatis增强框架)

直接去看官网吧&#xff1a;MyBatis-Flex - MyBatis-Flex 官方网站 MyBatis-Flex 是一个优雅的 MyBatis 增强框架&#xff0c;它非常轻量、同时拥有极高的性能与灵活性。我们可以轻松的使用 Mybaits-Flex 链接任何数据库&#xff0c;其内置的 QueryWrapper^亮点 帮助我们极大…

集装箱装卸作业相关的知识-Part1

1.角件 Corner Fitting of Container or called Corner Casting. there are eigth of it of one container. 国家标准|GB/T 1835-2006https://openstd.samr.gov.cn/bzgk/gb/newGbInfo?hcnoD35857F2200FA115CAA217A114F5EF12 中国的国标&#xff1a;GB/T 1835-2006《系列1集…

基于Java+SpringBoot+vue前后端分离网上租赁系统设计实现

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

可维护性测试

目录 什么是可维护性测试&#xff1f; 如何衡量应用程序的可维护性&#xff1f; 参考资料 如何进行可维护性测试&#xff1f; 可维护性测试最佳实践 易分析性 内部可分析性指标 外部可分析性指标 可变更性&#xff08;易修改性 Changeability | Modifiability&#xf…

pnpm的安装与使用

pnpm使用 官网&#xff1a; https://www.pnpm.cn/installation 简介 1、概念 performant npm &#xff0c;意味“高性能的 npm”。pnpm由npm/yarn衍生而来&#xff0c;解决了npm/yarn内部潜在的bug&#xff0c;极大的优化了性能&#xff0c;扩展了使用场景。被誉为“最先进的包…

五分钟理解Linux磁盘逻辑卷管理LVM

LVM概念 LVM&#xff08;Logical Volume Manager&#xff0c;逻辑卷管理&#xff09;是Linux环境下对磁盘分区进行管理的一种机制。LVM的工作原理其实很简单&#xff0c;它就是通过将底层的物理硬盘抽象的封装起来&#xff0c;然后以逻辑卷的方式呈现给上层应用。在传统的磁盘…

【iOS】iOS持久化

1 持久化目的 快速展示&#xff0c;提升体验 已经加载过的数据&#xff0c;用户下次查看时&#xff0c;不需要再次从网络&#xff08;磁盘&#xff09;加载&#xff0c;直接展示给用户 节省用户流量&#xff08;节省服务器资源&#xff09; 对于较大的资源数据进行缓存&#x…

容器管理工具 portainer可视化面板 的安装及使用

大家好&#xff0c;我是早九晚十二&#xff0c;目前是做运维相关的工作。写博客是为了积累&#xff0c;希望大家一起进步&#xff01; 我的主页&#xff1a;早九晚十二 什么是portainer Portainer是一款轻量级的Docker图形化管理的方案&#xff0c;相比k8s和k3s&#xff0c;只需…

Dev C++下载安装

1、下载 下载地址&#xff1a;Dev-C download | SourceForge.nethttps://sourceforge.net/projects/orwelldevcpp/ 点击“Download”下载 新建文件夹用于安装 2、安装 双击exe文件执行安装程序&#xff0c;选择“English”&#xff08;我没看到普通话&#xff09; 选择“I …

简单的语音广播功能方案

方案介绍&#xff1a; 1&#xff09;前端可以复用如下播放器的方案 &#xff08;或自行实现&#xff09; 其中&#xff0c;rtp封装过程中&#xff0c;额外增加了2字节的长度信息&#xff0c;后端服务接收之后&#xff0c;做好校验之后&#xff0c;需要剔除2个字节的数据头 2&a…

.Net Core依赖注入

.Net Core依赖注入 往期文章&#xff1a; .ner Core实现接口限流.net Core程序发布到IIS(Window Server 2019) 文章目录 .Net Core依赖注入前言一、ICO 和DI和DLICO [控制反转]DI [依赖注入]DL [依赖查找] 二、.net Core 中的依赖注入【Autofac】瞬时模式作用域模式单例模式尝…

Android Dalvik 虚拟机(详细版)

经典好文推荐,通过阅读本文,您将收获以下知识点: 1.Java 语言在Android 上运行流程 2.虚拟机发展过程 3.Android Dalvik 模式 4.Android N 中dex2oat 原理以及模式 5.如何判断dex2oat 采用的相关参数 6.如何查看dex2oat 的log 7.什么时候进行dex2oat 8.手机反应慢的原因 9.解…

再获权威认可!MIAOYUN荣获中国信通院一云多芯优秀案例,荣登《云管理产品与服务图谱》

2023年7月25日&#xff0c;以“云领创新&#xff0c;算启新篇”为主题的2023可信云大会在北京国际会议中心顺利召开。会上中国信息通信研究院发布了一云多芯稳定安全运行优秀案例和业界首个《云管理产品与服务图谱&#xff08;2023&#xff09;》。成都元来云志科技有限公司&am…

QEMU源码全解析12 —— QOM介绍(1)

接前一篇文章&#xff1a;QEMU源码全解析11 —— 定义一个QEMU模块&#xff08;3&#xff09; 本文内容参考&#xff1a; 《趣谈Linux操作系统》 —— 刘超&#xff0c;极客时间 《QEMU/KVM》源码解析与应用 —— 李强&#xff0c;机械工业出版社 特此致谢&#xff01; 前几…

springboot创建并配置环境(一) - 创建环境

文章目录 一、介绍二、启动环境Environment的分析三、进入源码四、创建环境1. 如何确定应用类型2. 测试 一、介绍 在springboot的启动流程中&#xff0c;启动环境Environment是可以说是除了应用上下文ApplicationContext之外最重要的一个组件了&#xff0c;而且启动环境为应用…

5点搞透电阻选型

一提到电阻&#xff0c;大家肯定会想到一个人&#xff1a;欧姆。 欧姆(Georg Simon 0hm&#xff0c;1787~1854年)是德国物理学家。生于巴伐利亚埃尔兰根城。欧姆定律及其公式的发现&#xff0c;给电学的计算&#xff0c;带来了很大的方便。 人们为了纪念他&#xff0c;将电阻的…

前端css--导航栏效果

效果如下&#xff1a; <!DOCTYPE html> <html lang"en" > <head><meta charset"UTF-8"><title>导航栏动态效果</title><link rel"stylesheet" href"./style/style.css"> </head> &…

51单片机:数码管和矩阵按键

目录 一:动态数码管模块 1:介绍 2:共阴极和共阳极 A:共阴极 B:共阳极 C:转化表 3:74HC138译码器 4:74HC138译码器控制动态数码管 5:数码管显示完整代码 二:矩阵按键模块 1:介绍 2:原理图 3:矩阵按键代码 一:动态数码管模块 1:介绍 LED数码管&#xff1a;数码管是一种…

【数字IC】芯片产业链

芯片产业链 FoundaryFablessEDADesign ServiceIP供应商IDM就业岗位 Foundary Fabless 无晶圆厂 IC design house EDA Design Service Veri Silicon &#xff1a; 芯原微 Alchip&#xff1a;世芯&#xff08;上海&#xff09; Brite&#xff1a;灿芯&#xff08;上海&…