java位运算(二),了解各个类型的最大最小值,以及怎么计算出来的

    xiaoxiao2021-03-25  64

    先科普计算机基础。

    byte是一个字节,有8个位(bits),即8个0、1。

    8位的第一个位是符号位,

    也就是说一个byte能代表最大的正数为 0111 1111,为127.

    一个byte能代表的最大负数为1000 0000,为-128.

    那你知道1111 1111代表的多少吗,你以为是255? 错误的,是-1。

    这里就要普及几个概念。

    原码,反码与补码

    原码: 一个整数按照绝对值大小转化成的二进制数为原码。

    22原码就是 0000 0000 0000 0000 0000 0000 0001 0110

    反码:将二进制数按位取反,所得的新二进制数称为原二进制数的反码。

    22反码就是 1111 1111 1111 1111 1111 1111 1110 1001

    补码:反码加1称为补码。

    22补码就是 1111 1111 1111 1111 1111 1111 1110 1010 

    也就是十六进制的0xFFFFFFEA。也就是-22.

    Java各个类型的占位

    int数据类型:byte(8bit ,-128~127) short(16 bit) int(32 bit) long(64 bit) float数据类型: 单精度(32 bit float)、双精度(64 bit double) char数据类型:unicode字符(16位)

    下面简单介绍下每种类型最大值是怎么来的。

    看上面知道 byte 为 8 bit ,bit是由0与1组成,而首位标识正负,所以byte最大值为 0111 1111,为127.

    而int 为 4个byte ,为32bit , 所以 int最大值为 0111 1111 1111 1111 1111 1111 1111 1111.

    同理,其他都是这么计算.

    转载请注明原文地址: https://ju.6miu.com/read-41085.html

    最新回复(0)