本文主要是介绍计算机中的进制介绍及原码、反码、补码说明,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一、进制介绍
进制:指进位制,是人们规定的一种进位方式。 表示某一位置上的数,运算时是逢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
这篇关于计算机中的进制介绍及原码、反码、补码说明的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!