JAVA byte取值范围表达理解

我们知道JAVA中byte是一个字节来进行存储的,即8位二进制数,可以表示的数字有256

但计算机中需要表示正数和负数,那么负数在计算机中怎么表示呢?

这里涉及一个新的概念就是

模:

模 即n个m进制能表示的数字的个数

如:八个二进制数的模就是256 

       两个十进制数呢,那就可以表示 0-99 这100个数,即模是100

(其实最终都是落地到二进制上来计算)

补数:

范围在 1~模 之间的任意两个相加等于模的数互为补数

先贤们就用一个很巧妙的方式来表达了负数:即在(0-模)范围内一半的数字表示正数,一半的数字表示负数

0-127(十进制) 这128个数字表示byte中的 0-127

128-225(十进制)这128个数字表示byte中-128 到 -1

在计算机中存储的二进制表示如下:

数字和对应的二进制

0127
0000 00000111 1111


 

128表示-128255表示-1
1000 00001111 1111


上面的二进制即是大家熟知的补码(补数对应的二进制数即补码)

源码,反码,补码体系

正数补码是其二进制数本身

负数的补码是首先获得其绝对值原码,再首位变1后其余取反再加1;

[+1] = [00000001] = [00000001] = [00000001]

[-1] = [10000001] = [11111110] = [11111111]

可以参看:http://www.cnblogs.com/zhangziqiu/archive/2011/03/30/ComputerCode.html

这和用模的概念获得数字在计算机中存储的二进制结果是一致的,

可以说后者(原码,反码,补码)是一种途径,而前者(一半用来表示正数,一半用来表示负数)是约定;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值