当前位置:网站首页>关于 byte 的范围
关于 byte 的范围
2022-07-29 23:41:00 【威少总冠军】
1. 关于原码、反码、补码
- 原码:一个数在计算机中的二进制形式,最高位表示符号位,1 表示 负,0 表示 正
[ 1 ]原 = 0000 0001
[ -1 ]原 = 1000 0001 - 反码:正数的反码与原码相同,负数的反码:在原码的基础上,符号位不变,其它各位取反(1 变 0,0 变 1)
[ 1 ]反 = 0000 0001
[ -1 ]反 = 1111 1110 - 补码:正数的补码与原码相同,负数的补码:反码 + 1
[ 1 ]补 = 0000 0001
[ -1 ]补 = 1111 1111
2. 计算机运算
- 计算机中只有加法,没有减法,减去一个数,就是加上这个数的负数
- 计算机运算时,符号位参与运算
- 人识别数,一定要看原码(对于人类而言,二进制表示的数一定是从原码中求出的)
- 原码运算:
1 - 1 = 1 + (-1) = [0000 0001]原 + [1000 0001]原 = [1000 0010]原 = -2 - 反码运算:
1 - 1 = 1 + (-1) = [0000 0001]原 + [1000 0001]原 = [0000 0001]反 + [1111 1110]反 = [1111 1111]反 = [ 1000 0000 ]原 = -0 - 补码计算:
1 - 1 = 1 + (-1) = [0000 0001]原 + [1000 0001]原 = [0000 0001]反 + [1111 1110]反 = [0000 0001]补 + [1111 1111]补 = [0000 0000]补 = 0
反码的作用是解决减法运算,补码的作用是解决反码产生的 ±0 问题
综上,计算机内部采用补码的方式存储有符号的数据,采用补码的方式进行运算
3. 为什么byte类型的范围是 -128 ~ 127?
- byte 占一个字节(8个 bit 位),最高位是符号位,尾七位可以表示的就是 0 ~ 2^7 - 1( 1000 0000 = 2 ^ 7,减1,得到 111 1111),所以 byte 可以表示 -127 ~ 127
- [1000 0000]补 表示 -128,-128只有补码,没有原码和反码
- 我认为[1000 0000]补 = [0111 1111]反 = [0000 0000]原 = 0;已经有[0000 0000]原 表示 0 了,不需要[1000 0000]补 表示 0 了,所以[1000 0000]补 表示 -128
- 综上所述 byte 的范围就是 -128 ~ 127
- byte类型,1 + 127 = [0000 0001]原 + [0111 1111]原 = [0000 0001]补 + [0111 1111]补 = [1000 0000]补 = -128;
2 + 127 = [0000 0010]原 + [0111 1111]原 = [0000 0010]补 + [0111 1111]补 = [1000 0001]补 = [1000 0000]反 = [1111 1111]原 = -127
4. 基本类型的范围
| 基本数据类型 | 字节 and 范围 |
|---|---|
| byte | 1 , -128 ~ 127(- 2 ^ 7 ~ 2 ^ 7-1 ) |
| short | 2,- 2 ^ 15 ~ 2 ^ 15-1 |
| int | 4,-2 ^ 31 ~ 2 ^ 31-1 |
| long | 8,-2 ^ 63 ~ 2 ^ 63 - 1 |
| float | 4 |
| double | 8 |
| char | 2 |
5. 关于 int 类型的范围
- 0000 0000 0000 0000 0000 0000 0000 0000,int类型占4个字节,32个bit位
- 最高位是符号位,尾31位可以表示的是 0 ~ 2^31 - 1,所以 int 可以表示 -2 ^31 - 1 ~ 2 ^31 - 1
- [1000 0000 0000 0000 0000 0000 0000 0000]补 表示 -2^31,[0111 1111 1111 1111 1111 1111 1111 1111]反 = [0000 0000 0000 0000 0000 0000 0000 0000]原 表示 0,与 byte 类似
- 因此,int 类型的范围是 -2 ^ 31 ~ 2 ^ 31-1
神奇黄河口,魅力石油城
山东东营
边栏推荐
猜你喜欢
随机推荐
leetcode122. Best Time to Buy and Sell Stock II 买卖股票的最佳时机 II(简单)
esp12f + tft 显示图片问题
容器化 | 在 Rancher 中部署 MySQL 集群
WIN2008的IIS上下载文件大小限制之修改
新标杆!美创科技助力广西桂林某三甲医院实现勒索病毒主动防御
全国双非院校考研信息汇总整理 Part.2
乐理&吉他技巧
devops学习(四) Jenkins CI 持续集成
微信小程序获取手机号getPhoneNumber接口报错44002
【openlayers】地图【二】
微信小程序获取手机号getPhoneNumber接口报错41001
Single chip ds1302 clock program (51 single chip liquid crystal display program)
idea设置自动去除未引用(不再引用)的引用
Dropout回顾
How to make labview an application (labview program recognizes shapes)
「大厂必备」系列之Redis主从、持久化、哨兵
1326. 灌溉花园的最少水龙头数目 动态规划
Wincc报表教程(SQL数据库的建立,wincc在数据库中保存和查询数据,调用Excel模板把数据保存到指定的位置和打印功能)
devops学习(六)Jenkins 持续部署-版本选择
【云原生Kubernetes】二进制搭建Kubernetes集群(中)——部署node节点









