计算机中的进制介绍及原码、反码、补码说明

2024-04-27 19:52

本文主要是介绍计算机中的进制介绍及原码、反码、补码说明,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、进制介绍

进制:指进位制,是人们规定的一种进位方式。 表示某一位置上的数,运算时是逢x进一位。

比如:十进制逢十进一,二进制就是逢二进一,八进制就是逢八进一… 常用进制:二进制,八进制,十进制,十六进制

  • 不同进制的书写规则

十进制:数值默认都是10进制,不需要加任何修饰符。
二进制:数值前面以0b开头,b大小写都可以。
八进制:数值前面以0开头。
十六进制:数值前面以0x开头,x大小写都可以。

1、进制运算规则

  • 十进制

我们平常使用的数值都是十进制,该怎么运算就怎么运算。

运算规则:逢十进一,借一当十

在这里插入图片描述

  • 二进制

二进制数据是用0和1两个数值来表示。例如:0101000

进位规则是:逢二进一;借位规则:借一当二

在这里插入图片描述

  • 八进制

八进制采用0,1,2,3,4,5,6,7八个数字,逢八进一,借一当八

  • 十六进制

十六进制用数字0到9和字母A到F(或a~f)表示,其中A~F表示10~15。
0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,逢十六进一,借一当十六
前端css样式的颜色,基本就是用十六进制表示的,比如:#000000,#ededed,#eeeeee

2、进制之间的转换

  • 二进制到十进制的转换

公式:系数 * 基数的权次幂相加

系数:每一位上的数。
基数:几进制,就是几
权:从数值的右侧,以0开始,逐个+1增加(权次幂)

在这里插入图片描述

  • 十进制到二进制的转换

公式:除基取余

使用源数据,不断的除以基数(几进制,基数就是几)得到余数,直到商为0,再将余数倒着拼起来即可。

在这里插入图片描述

  • 十进制到十六进制的转换

公式:除基取余

十进制到十六进制转换方法和十进制到二进制的转换方法一样,使用源数据,不断的除以基数(几进制,基数就是几)得到余数,直到商为0,再将余数倒着拼起来即可。

在这里插入图片描述

根据十进制转二进制和十六进制可以得出结论:除基取余是十进制到任意进制的转换通用公式

3、快速进制转换法

**8421码:**又称BCD码,是BCD代码中最常用的一种 BCD:(Binary-Coded Decimal)二进制码十进制数 在这种编码方式中,每一位二进制的1都是代表一个固定数值,把每一位的1代表的十进制数加起来 得到的结果就是它所代表的十进制数。

二进制快速转十进制,公式对照表:
在这里插入图片描述
十进制8421对照表

在这里插入图片描述

  • 二进制快速转八进制

八进制:将三个二进制位看为一组,再进行转换

原因:八进制逢八进一,三个二进制位最多可以表示111,也就是数值7,如果出现第四位,就超范围了。

先把二进制转10进制,然后拼起来就是八进制

在这里插入图片描述

  • 二进制快速转十六进制

十六进制:将四个二进制位看为一组,再进行转换

原因:十六进制逢十六进一,四个二进制位最多可以表示1111,也就是数值15,如果出现第5位,就超范围了。

在这里插入图片描述

二、原码、反码、补码

1、原码、反码、补码的存储

一个十进制数是有正负之分,在计算机中如何表示我们的正号和负号,这就涉及到了计算机编码形式。

在计算机中,用原码、反码、补码来表示数据。在内存中的数据使用补码来存储

2、存储规则

  • 数据就在内存中总是以二进制补码的形式存放。最高位为符号位。正数为0,负数为1 (不完全)
  • 正数的原码、反码、补码就是它本身。原码该数转换位二进制的形式
  • 负数的反码:符号位不变,对原码其它位依次取反。0变1,1变0
  • 负数的补码:符号位不变,反码 + 1(使用二进制运算规则反码+1)

以8bit的数据存储为例

+10    	
原码:  0000 1010   
反码: 0000 1010
补码: 0000 1010     在内存中以补码存储-10   原码: 1000 1010反码: 1111 0101补码:  1111 0110     在内存中以补码存储

3、补码转换为原码

方法1: 原码 = 补码 - 1 ,然后符号位不变,按位取反

例如:

-10  
补码:1111 0110
-1 :1111 0101
取反:1000 1010

方法2: 对补码再求补码可得原码。【推荐】

例如:

-10 补码:1111 0110取反:1000 1001+1:  1000 1010

这篇关于计算机中的进制介绍及原码、反码、补码说明的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/941389

相关文章

JSR-107缓存规范介绍

《JSR-107缓存规范介绍》JSR是JavaSpecificationRequests的缩写,意思是Java规范提案,下面给大家介绍JSR-107缓存规范的相关知识,感兴趣的朋友一起看看吧... 目录1.什么是jsR-1072.应用调用缓存图示3.JSR-107规范使用4.Spring 缓存机制缓存是每一

无法启动此程序因为计算机丢失api-ms-win-core-path-l1-1-0.dll修复方案

《无法启动此程序因为计算机丢失api-ms-win-core-path-l1-1-0.dll修复方案》:本文主要介绍了无法启动此程序,详细内容请阅读本文,希望能对你有所帮助... 在计算机使用过程中,我们经常会遇到一些错误提示,其中之一就是"api-ms-win-core-path-l1-1-0.dll丢失

C语言中的常见进制转换详解(从二进制到十六进制)

《C语言中的常见进制转换详解(从二进制到十六进制)》进制转换是计算机编程中的一个常见任务,特别是在处理低级别的数据操作时,C语言作为一门底层编程语言,在进制转换方面提供了灵活的操作方式,今天,我们将深... 目录1、进制基础2、C语言中的进制转换2.1 从十进制转换为其他进制十进制转二进制十进制转八进制十进

Java中 instanceof 的用法详细介绍

《Java中instanceof的用法详细介绍》在Java中,instanceof是一个二元运算符(类型比较操作符),用于检查一个对象是否是某个特定类、接口的实例,或者是否是其子类的实例,这篇文章... 目录引言基本语法基本作用1. 检查对象是否是指定类的实例2. 检查对象是否是子类的实例3. 检查对象是否

什么是ReFS 文件系统? ntfs和refs的优缺点区别介绍

《什么是ReFS文件系统?ntfs和refs的优缺点区别介绍》最近有用户在Win11Insider的安装界面中发现,可以使用ReFS来格式化硬盘,这是不是意味着,ReFS有望在未来成为W... 数十年以来,Windows 系统一直将 NTFS 作为「内置硬盘」的默认文件系统。不过近些年来,微软还在研发一款名

idea报错java: 非法字符: ‘\ufeff‘的解决步骤以及说明

《idea报错java:非法字符:‘ufeff‘的解决步骤以及说明》:本文主要介绍idea报错java:非法字符:ufeff的解决步骤以及说明,文章详细解释了为什么在Java中会出现uf... 目录BOM是什么?1. BOM的作用2. 为什么会出现 \ufeff 错误?3. 如何解决 \ufeff 问题?最

C#使用StackExchange.Redis实现分布式锁的两种方式介绍

《C#使用StackExchange.Redis实现分布式锁的两种方式介绍》分布式锁在集群的架构中发挥着重要的作用,:本文主要介绍C#使用StackExchange.Redis实现分布式锁的... 目录自定义分布式锁获取锁释放锁自动续期StackExchange.Redis分布式锁获取锁释放锁自动续期分布式

redis过期key的删除策略介绍

《redis过期key的删除策略介绍》:本文主要介绍redis过期key的删除策略,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录第一种策略:被动删除第二种策略:定期删除第三种策略:强制删除关于big key的清理UNLINK命令FLUSHALL/FLUSHDB命

C++使用printf语句实现进制转换的示例代码

《C++使用printf语句实现进制转换的示例代码》在C语言中,printf函数可以直接实现部分进制转换功能,通过格式说明符(formatspecifier)快速输出不同进制的数值,下面给大家分享C+... 目录一、printf 原生支持的进制转换1. 十进制、八进制、十六进制转换2. 显示进制前缀3. 指

Pytest多环境切换的常见方法介绍

《Pytest多环境切换的常见方法介绍》Pytest作为自动化测试的主力框架,如何实现本地、测试、预发、生产环境的灵活切换,本文总结了通过pytest框架实现自由环境切换的几种方法,大家可以根据需要进... 目录1.pytest-base-url2.hooks函数3.yml和fixture结论你是否也遇到过