常见的进制转换与有符号数据表示法

注:本内容参考与传智播客的Java内容的讲解,当然我整理了一下,做个记录~~~ 其中我认为很有价值的是有符号数据表示法,真正的去深入了解计算机,虽然我是一个渣渣~~~

所谓进制就是指:就是位进制,是人们规定的一种进位方法。对于任何一种进制 --X进制,就表示某一位置上的数运算时是逢X进一位。二进制就是逢二进一,八进制就是逢八进一,十进制就是逢十进一,十六进制就是逢十六进一。

一、常见的进制转换

1、在Java中针对整数常量提供了四种表现形式
  (1)二进制 由0,1组成。以0b开头。
  (2)八进制 由0,1,...7组成。以0开头。
  (3)十进制 由0,1,...9组成。整数默认是十进制。
  (4)十六进制 由0,1,...9,a,b,c,d,e,f(大小写均可)组成。以0x开头。

2、进制转换

(1)其他进制到十进制(系数*基数^权)

  系数:就是每一个位上的数值

  基数:x进制的基数就是x

  权:对每一个位上的数据,从右,并且从0开始编号,对应的编号就是该数据的权。

例子:

0b10101 (这个数是二进制的一个数,因为是以0b开头的)

=1*2^4 + 1*2^2 + 1*2^0

=16 + 4 + 1

=21

0123(这个数是八进制的一个数,因为是以0开头的)

=1*8^2 + 2*8^1 + 3*8^0

=64 + 16 + 3

=83

0x3c(这个数是十六进制的一个数,因为是以0x开头的)

=3*16^1 + c*16^0

=48 + 12

=60

(2)十进制到其他进制的转换

  除基取余,直到商为0,余数反转。

例子:

52分别得到二进制,十进制,十六进制

得到二进制:

52 / 2 = 260

26 / 2 = 130

13 / 2 = 6                 1

6  / 2 = 3                  0

3  / 2 = 1                  1

1  / 2 = 0                  1

0b110100

得到八进制:

52 / 8 = 64

6  / 8 = 0          6

064

得到十六进制:

52 / 16 = 3       4

3  / 16 = 0 3

0x34

3、进制转换的快速转换法

(1)十进制和二进制间的转换

8421码。

(2)二进制到八进制,十六进制的转换

二、有符号数据表示法

在计算机内,有符号数据有三种表示法:原码、反码和补码。所有数据的运算都是采用补码进行的。

  原码:就是二进制定点表示法。即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。

  反码:正数的反码与其原码相同,负数的反码是对其原码逐位取反,符号位除外。

  补码:正数的补码与其原码相同,负数的补码是在其反码的末位加1。

例子:

1)已知某数X的原码为10110100B,试求X的补码和反码。

符号位数值位

原码:10110100

反码:11001011

补码:11001100

2)已知某数X的补码11101110B,试求其原码。

符号位数值位

补码:11101110

反码:11101101

原码:10010010

原文地址:https://www.cnblogs.com/ssh-html/p/9736019.html

时间: 2024-08-01 11:42:19

常见的进制转换与有符号数据表示法的相关文章

【搬砖】安卓入门(2)- Java开发编程基础--进制转换和运算符

02.01_Java语言基础(常量的概述和使用)(掌握) A:什么是常量 在程序执行的过程中其值不可以发生改变 B:Java中常量的分类 字面值常量 自定义常量(面向对象部分讲) C:字面值常量的分类 字符串常量        用双引号括起来的内容 整数常量        所有整数 小数常量        所有小数 字符常量        用单引号括起来的内容,里面只能放单个数字,单个字母或单个符号 布尔常量        较为特殊,只有true和false 空常量        null(数组

九、进制转换

计算机存储数据采用的是二进制 1.什么是进制 进制其实就是进位制度,规定好的进位方法,列如:十进制是逢十进一,二进制是逢二进一 a.常见的进制:十进制[0~9],二进制[0~1],八进制[0~7,用数字0开头],十六进制[0~9,a~f或者A~F,用0x或者0X开头] b.进制的特点 1>每种进制都有确定的符号集 2>每种进制采用位置表示发,位置不同,表示的数值不同,值不同与他所在位的权值有关 列如:12345--->1*10^4+2*10^3+3*10^2+4*10^1+5*10^0

JAVA之旅(一)——基本常识,JAVA概念,开发工具,关键字/标识符,变量/常量,进制/进制转换,运算符,三元运算

JAVA之旅(一)--基本常识,JAVA概念,开发工具,关键字/标识符,变量/常量,进制/进制转换,运算符,三元运算 Android老鸟重新学一遍JAVA是什么感觉?枯燥啊,乏味啊,而且归纳写博客,都是很痛苦的事情,但是程序之路这么长,你必须精通的不能再精通一门语言才行(有点说大了哈),但是最起码你要如鱼得水吧,我准备的资料有: JAVA编程思想 深入浅出JAVA 黑马,传智,慕课,极客学院等-的视频 Google搜索 我们既然是重新学一遍,那我们尽量就是用记事本去敲代码好了,这里我用notep

任意进制转换算法

任意进制转换算法 N年没有写博客,发个进制转换的玩下,支持负数:功能属于简化版的 Convert.ToInt32 ,特点是: 1.任意位,如:0,1(二进制),0...7(八进制),0...9,A...F(16进制),0...N(N进制),或者是:[email protected]#$%^&*(8进制,字符符号),也可以是中文. 2.8 byte 最大长度. 3.C#源码. 最近写markdown格式习惯啦,cnblogs啥时候全改掉算了,别用这个htmleditor算了. 先说明下进制转换的基

03 php 数据类型:整数,进制转换,浮点,字符,布尔,数组,空类型,类型转换,算术运算,比较运算

03 数据类型:整数,进制转换,浮点,字符,布尔,数组,空类型,类型转换, 算术运算,比较运算,逻辑运算,短路现象, 三目运算符,字符型运算: 数据类型 整体划分 标量类型: int, float, string, bool 复合类型: array,     object 特殊类型: null,     resouce 整数类型int, integer 3种整数表示法 十进制写法:123: $n1 = 123; 八进制写法: 0123 $n2 = 0123; 十六进制写法: 0x123 $n3

原理之一,进制转换

原理之一,进制转换 日常生活中采用个数字都是十进制,而计算机采用的是运算更简单.易实现且可靠,为逻辑设计提供了有力途经的二进制,除此之外还有八进制和十六进制作为二进制的缩写. 进制:逢N进一,N是每种进位计数制表示一位数所需要的符号数目为基数. 二进制:逢二进一,借一当二,包含的数字(0.1) 八进制:逢八进一,借八当一,包含(0.1.2.3.4.5.6.7) 十六进制:逢十六当一,以一当十六,包含(0.1.2.3.4.5.6.7.8.9.10(A).11(B).12(C).13(D).14(E

2~62位任意进制转换(c++)

进制转换的符号表为[0-9a-zA-Z],共61个字符,最大可表示62进制. 思路是原进制先转换为10进制,再转换到目标进制. 疑问: 对于负数,有小伙伴说可以直接将符号丢弃,按照整数进行进位转换,最后再将负号补回来,我认为这种做法是不对的. 正确的做法是:考虑好按照16位(short)还是32位(int)抑或64位(long long),先求出二进制补码(这时候就正负数就统一了),将二进制数转换为十进制后在转换为其他进制(如果有小伙伴知道如何直接将二进制转换为任意进制的方法可以留言告诉我,不胜

c#中的进制转换

今天偶然接触到了一个位或的表达式,就像着自己做一个进制之间的转换器,基本功不扎实,二进制之间的运算稀里糊涂的. 常见的进制方式,主要有二进制,八进制,十进制和十六进制,通用的转换方式是把非十进制的数据类型转换成十进制的,然后再转换成其他类型. 进制转换的入口函数: /// <summary> /// 进制转换 /// </summary> /// <param name="input"></param> /// <param nam

shell进制转换

使用 Shell 运算进行进制转换 假定在您的脚本中有一些数字,您需要以另外的进制处理这些数字.使用 Shell 运算可以很容易地自动实现这类转换.一种情况是使用 Shell 运算把一个数字从给定的进制转换位十进制.如果数字以运算展开式的形式提供,那么假定它带有十进制符号,除非 它前面带有 0(这种情况假定是八进制)或 0x(这种情况假定是十六进制).键入以下内容以得到一些八进制和十六进制值的十进制输出: $ echo $((013)) $ echo $((0xA4)) 您还可以使用以下格式指定