二进制与进制转换与原码、反码、补码详解--内含许多超详细图片讲解!!!

news2025/1/21 6:25:55

前言

今天给大家分享一下C语言操作符的详解,但在此之前先铺垫一下二进制和进制转换与原码、反码、补码的知识点,都非常详细,也希望这篇文章能对大家有所帮助,大家多多支持呀!

操作符的内容我放在我的下一篇文章啦,大家一定要看哈!!!

目录

前言

目录

一、二进制和进制转换

1.    10进制转化为10进制

2.    2进制转化为10进制 

2.1  10进制转化为2进制

3.    2进制转8进制和16进制

3.1   2进制转8进制

 3.2   2进制转16进制

二、原码、反码、补码

为什么数据存放的是补码?

结尾


一、二进制和进制转换

我们所说的2进制、8进制、10进制、16进制就是数值的不同表现形式

eg:13的2进制:1101

     13的8进制:15

     13的10进制:13

     13的16进制:d

1.    10进制转化为10进制

eg:123

  • 从个位开始,平方都是从0先开始

2.    2进制转化为10进制 

2进制是由(0~1)的数字组成

10进制是由(0~9)的数字组成

eg:1101

  • 相比十进制转化为十进制,这次的底数变为2了
  • 先分别算每一项,加在一起,别忘记乘上所在位数对应的数字

2.1  10进制转化为2进制

eg:125

所得出的余数从下往上写就是转化完的二进制,为01111101,即1111101。

大家动手操作一下将它再转化为10进制!!!

注意:当数字比较小时,可以使用下图所示方法

如果是22呢,就为10110啦

3.    2进制转8进制和16进制
  • 8进制是由(0~7)的数字组成
  • 16进制较为特殊,是由(0~9)、(a~f)组成的
3.1   2进制转8进制

首先,将0~7的数字各自写成2进制,最多有3个二进制位,所以像2的二进制本身是0,需要将它写成010,这个换算方法在上一节标红的注意,很实用,望大家都能掌握,在上图我已经先列出来了,因为8进制的每一位是0~7的数字,所以只需列出7个即可。

然后从2进制序列中右边低位开始向左每3个2进制位会换算一个8进制位,剩余不够3个2进制位的直接换算。

如图是2进制的0110101,从最右边开始依次取三个

011:3

101:5

001:1

但是值得注意的是,换算后的153,需要写成0153,0开头,才会被当做8进制 

大家可以上机调试一下,153与0153是不同的。

 3.2   2进制转16进制

2进制转化为16进制与转化为8进制相同,是将0~9、a~f各自写成2进制,需要4个2进制位

eg:2进制的01101011

同时我也将二进制都列了出来,但是建议还是要动手算算。

所以转化为的结果为0x6b,相同的,16进制前要加上0x

二、原码、反码、补码

  • 整数的二进制形式有三种:原码、反码、补码。
  • 有符号整数的三种表示方法均有符号位和数值位两部分,二进制序列中,最高的一位被当做符号位,剩余的都是数值位。
  • 即正数最高位显示0,负数最高位显示1。
  • 整数分为正整数与负整数。
  • 在正整数中:原码=反码=补码。
  • 在负整数中:
  1. 直接将数值按照正负数的形式翻译成二进制得到的就是原码
  2. 将原码的符号位不变,其他一次按位取反就是反码(1变成0,0变成1,符号位不变)
  3. 反码+1得到补码

例:a=3与a=-3; 

注意:逢二进一,如果反码尾数是101,则变成110

整数在内存中存储的是2进制的补码

为什么数据存放的是补码?

在计算机中,数值一律用补码来表示和存储。因为使用补码可以将符号位和数值域统一处理;同时,加法和减法也可以统一处理(CPU只有加法器)此外,补码与原码相互转换,其运算过程是相同的,不需要额外的硬件电路。

下图是分析的过程

结尾

这次的分享就到这里啦,这些都是为了接下来的操作符做铺垫,也在我的主页里! 

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

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

相关文章

基于人工智能的口试模拟、LLM将彻底改变 STEM 教育

概述 STEM教育是一种整合科学(Science)、技术(Technology)、工程(Engineering)和数学(Mathematics)的教育方法。这种教育模式旨在通过跨学科的方式培养学生的创新能力、问题解决能力…

MySQL 高级 - 第十四章 | 事务基础知识

目录 第十四章 事务基础知识14.1 数据库事务概述14.1.1 存储引擎支持情况14.1.2 基本概念14.1.3 事务的 ACID 特性14.1.4 事务的状态 14.2 如何使用事务14.2.1 显示事务14.2.2 隐式事务14.2.3 隐式提交数据的情况14.2.4 使用举例14.2.4.1 提交与回滚14.2.4.2 测试不支持事务的 …

Yarn:一个快速、可靠且安全的JavaScript包管理工具

(创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,还请三连支持一波哇ヾ(@^∇^@)ノ) 目录 一、Yarn简介 二、Yarn的安装 1. 使用npm安装Yarn 2. 在macOS上…

11.redis的客户端-Jedis

1.Jedis 以redis命令作为方法名称,学习成本低,简单使用。但是jedis实例是不安全的,多线程环境下需要基于连接池来使用。 2.Lettuce lettuce是基于Netty实现的,支持同步,异步和响应式编程方式,并且是线程…

EmEditor 打开文档后光标如何默认定位到文档最后一行?

1、录制宏 (1)、点击工具栏上的红色录制宏按钮,开始录制宏。如图: (2)、按住快捷键Ctrl End快捷键,使光标跳转到文档末尾 (3)、完成录制后,再次点击录制按钮…

Hive SQL ——窗口函数源码阅读

前言 使用Starrocks引擎中的窗口函数 row_number() over( )对10亿的数据集进行去重操作,BE内存溢出问题频发(忘记当时指定的BE内存上限是多少了.....),此时才意识到,开窗操作,如果使用 不当,反而…

stm32工程配置

目录 STM32F103 start:启动文件、内核寄存器文件、外设寄存器文件、时钟配置文件 library:标准库函数(内核及外设驱动) user:用户文件、库函数配置文件、中断程序文件 添加宏定义 STM32F407 start目录 启动文件…

实战:使用Certbot签发免费ssl泛域名证书(主域名及其它子域名共用同一套证书)-2024.8.4(成功测试)

1、使用Certbot签发免费ssl泛域名证书 | One实战:使用Certbot签发免费ssl泛域名证书(主域名及其它子域名共用同一套证书)-2024.8.4(成功测试)https://wiki.onedayxyy.cn/docs/docs/Certbot-install/

Transformer相关介绍

1 Transformer 介绍 Transformer的本质上是一个Encoder-Decoder的结构。 1.1 编码器 在Transformer模型中,编码器(Encoder) 的主要作用是将输入序列(例如文本、语音等)转换为隐藏表示(或者称为特征表示…

24军dui文职联勤保障部报名照规格要求

24军dui文职联勤保障部报名照规格要求 #军队文职 #文职 #文职备考 #联勤保障部队 #文职考试 #文职上岸 #2024军队文职

python-查找元素3(赛氪OJ)

[题目描述] 有n个不同的数&#xff0c;从小到大排成一列。现在告诉你其中的一个数x&#xff0c;x不一定是原先数列中的数。你需要输出最后一个<x的数在此数组中的下标。输入&#xff1a; 输入共两行第一行为两个整数n、x。第二行为n个整数&#xff0c;代表a[i]。输出&#x…

练习2.30

2.29题目没有理解,暂时没有做出来,先把2.30做了 上代码 (defn square [x](* x x)) ;第一版,直接定义 (defn square-tree[tree](cond (not (seq? tree)) (square tree)(empty? tree) nil:else (cons (square-tree (first tree)) (square-tree (rest tree)))) ) ;使用map …

LeetCode刷题笔记 | 283 | 移动零 | 双指针 |Java | 详细注释

&#x1f64b;大家好&#xff01;我是毛毛张! &#x1f308;个人首页&#xff1a; 神马都会亿点点的毛毛张 原地移除元素2 LeetCode链接&#xff1a;283. 移动零 1.题目描述 给定一个数组 nums&#xff0c;编写一个函数将所有 0 移动到数组的末尾&#xff0c;同时保持非零元…

Nextjs——国际化那些事儿

背景&#xff1a; 某一天&#xff0c;产品经理跟我说&#xff0c;我们的产品需要搞国际化 国际化的需求说白了就是把项目中的文案翻译成不同的语言&#xff0c;用户想用啥语言来浏览网页就用啥语言&#xff0c;虽然说英语是通用语言&#xff0c;但国际化了嘛&#xff0c;产品才…

学习编程的第二十天,加油!

3&#xff1a;递归与迭送&#xff08;循环是一种迭代&#xff09; &#xff01;&#xff01;&#xff01;递归算有些东西时计算量会很大导致运行时间过久&#xff0c;而使用循环会大大节省时间&#xff0c;但需要注意溢出的情况。 递归的练习&#xff0c;第一张呢不符合我们的…

刷题——不同路径的数目

不同路径的数目(一)_牛客题霸_牛客网 我第一眼&#xff0c;觉得是没有思路的&#xff0c;我也是看别人代码反应过来&#xff0c; 画图可以看出来 外边沿的只有一种到达方式&#xff0c;全部赋值1&#xff0c; 如果有两个方块相接&#xff0c;那就让此方块的左邻和右邻相加&…

线程池ThreadPoolExecutor使用

文章目录 一、基础-Java中线程创建的方式1.1、继承Thread类创建线程1.2、实现Runnable接口创建线程1.3、实现Calable接口创建线程1.4、使用线程池创建线程二、概念-线程池基本概念2.1、并发和井行的主要区别2.1.1、处理任务不同2.1.2、存在不同2.1.3、CPU资源不同2.2、什么是线…

网页保护用户 小tips

在使用创建web开发的过程中&#xff0c;直接使用用户名url&#xff0c;容易造成用户信息的被攻击&#xff0c;例如对方直接访问 ../../.../username 的网页&#xff0c;可以窃取用户信息&#xff0c;然而把usename变成一堆乱码就安全的多 效果&#xff1a; 代码&#xff1a;…

一个 .NET 开源的地图组件库 - Mapsui

前言 今天大姚给大家分享一个.NET开源&#xff08;MIT License&#xff09;、免费、同时支持多平台框架&#xff08;MAUI、WPF、Avalonia、Uno、Blazor、WinUI、Eto、.NET Android 和 .NET iOS&#xff09;地图组件库&#xff1a;Mapsui。 项目源代码 支持的UI框架的NuGet包 …

JavaFX布局-TabPane

JavaFX布局-TabPane 常用属性paddingsidetabClosingPolicytabDragPolicy 实现方式Java实现fxml实现 组织一组tab的容器&#xff0c;可以设置关闭&#xff0c;拖拽等每个tab内容可以设置不同容器数据 常用属性 padding 内边距&#xff0c;可以单独设置上、下、左、右的内边距 …