当前位置:网站首页>关于 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
神奇黄河口,魅力石油城
山东东营
边栏推荐
- How to make labview an application (labview program recognizes shapes)
- devops学习(八) 搭建镜像仓库---jenkins推送镜像
- DNA修饰碳纳米管|DNA修饰单层二硫化钼|DNA修饰二硫化钨(注意事项)
- LabVIEW为什么在存储VI时死机
- [leetcode] 80. Delete duplicates in sorted array II (medium) (double pointer, in-place modification)
- Apache Doris 1.1 特性揭秘:Flink 实时写入如何兼顾高吞吐和低延时
- 线上无序的
- BEVDetNet:Bird‘s Eye View LiDAR Point Cloud based Real-time 3D Object Detection for Autonomous Drivi
- devops学习(四) Jenkins CI 持续集成
- 能源企业数字化转型背景下的数据安全治理实践路径
猜你喜欢
Access Modbus TCP and Modbus RTU protocol devices using Neuron
JetsonNano learning (5) JetsonNano installs PyTorch and Torchvision
Mysql内外连接
DNA修饰碱基5-甲基胞嘧啶和8-羟基鸟嘌呤|DNA修饰量子点|规格信息
WLAN笔记
Apache Doris 1.1 特性揭秘:Flink 实时写入如何兼顾高吞吐和低延时
jenkins use and maintenance
【openlayers】地图【一】
容器化数据库必经之道
High Numbers|Calculation of Triple Integral 3|Uncle High Numbers|Handwritten Notes
随机推荐
29岁从事功能测试被辞,面试2个月都找不到工作吗?
JetsonNano learning (5) JetsonNano installs PyTorch and Torchvision
【无标题】清空吗
决策树原理及代码实现
全国双非院校考研信息汇总整理 Part.5
MySQL事务(transaction) (有这篇就足够了..)
Vulkan与OpenGL对比——Vulkan的全新渲染架构
[2023 School Recruitment Questions] Summary of Common Interview Questions (7. Common Bus Protocols) (Continuously updated with subsequent interviews....)
1326. 灌溉花园的最少水龙头数目 动态规划
2022/7/29 考试总结
Sentinel入门
新标杆!美创科技助力广西桂林某三甲医院实现勒索病毒主动防御
「大厂必备」系列之Redis主从、持久化、哨兵
【无标题】
暴力递归到动态规划 03 (背包问题)
DNA修饰碱基5-甲基胞嘧啶和8-羟基鸟嘌呤|DNA修饰量子点|规格信息
The latest Gansu construction welder (construction special operation) simulation question bank and answer analysis in 2022
容器化数据库必经之道
SQL Server、MySQL主从搭建,EF Core读写分离代码实现
一文解答web性能优化