脑补二进制与十进制的理解



首先了解几个概念:
1、字(Byte)节是长度单位。位(bit)也是长度单位。

2、基本数据类型 所占用空间大小:byte b; 1字节、short s; 2字节、int i; 4字节、long l; 8字节、char c; 2字节(C语言中是1字节)、float f; 4字节、double d; 8字节、boolean bool; false/true 1字节

3、因为计算机通信和存储的时候都是以010101这样的二进制数据为基础的,这儿的一个0和1占的地方就叫bit(位),即一个二进制位。
1Byte=8bit
1KB=1024B
1MB=1024KB(2的十次方)

4、我们常用的进制包括:二进制、八进制、十进制与十六进制,它们之间区别在于数运算时是逢几进一位。比如二进制是逢2进一位,十进制也就是我们常用的0-9是逢10进一位。可以用补码相互转换。

5、为什么使用补码进行计算?
在计算机系统中,数值一律用补码来表示和存储。原因在于,使用补码,可以将符号位和数值域统一处理;同时,加法和减法也可以统一处理。此外,补码与原码相互转换,其运算过程是相同的,不需要额外的硬件电路。
补码的特性:一个负整数(或原码)与其补数(或补码)相加,和为模;对一个整数的补码再求补码,等于该整数自身;补码的正零与负零表示方法相同。

6、java里数据类型低精度可以自动转向高精度,而相反怎需要强制类型转换,且会丢失精度。
常见例子:byte f=(byte)130
数据130默认是int类型的十进制数据
第一步十进制的130转换成二进制数据
1 0 0 0 0 0 1 0
第二步130是int类型是占4个字节的,所以在内存的表现形式是
00000000 00000000 00000000 10000010
做了截取后的结果为
10000010
通过观察最高位符号位是1,这是一个负数,因为在计算机中所有的数据都是以补码的形式出现的所以要算它的补码
原码:1 0000010 原码变反码,最高位符号位不变,其他数值位1变0,0变1得反码
反码:1 1111101 反码变补码就是反码加1得
补码;1 1111110
最终的看到的结果就是
1 1111110最高为是符号位不运算,数值为转化为十进制是64+32+16+8+4+2=126符号位负
所以为-126

qrcode_for_gh_bf7a27ade681_258.jpg

作者: 小柒

出处: https://blog.52itstyle.com

分享是快乐的,也见证了个人成长历程,文章大多都是工作经验总结以及平时学习积累,基于自身认知不足之处在所难免,也请大家指正,共同进步。

本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出, 如有问题, 可邮件(345849402@qq.com)咨询。