负数在计算机中如何表示呢?

1、是否需要有正负。

如果这个量不会有负值,那么我们可以使用无正负的类型。

分正负的类型,称为有符号类型;无正负的类型(只有正值),称为无符号类型。

2、使用二制数中的最高位表示正负。

(第一位为最高位)

单字节数: 1111 1111

双字节数: 1111 1111 1111 1111

四字节数: 1111 1111 1111 1111 1111 1111 1111 1111

当一个数是无符号类型时,那么其最高位的1或0,和其它位一样,用来表示该数的大小。

当一个数是无符号类型时,最高数称为“符号位”。为1时,表示该数为负值,为0时表示为正值。

3、无符号类型和有符号类型的范围区别。

无符号类型中,所有的位都用于直接表示该值的大小。我们举一个字节的数值对比:

无符号类型: 1111 1111 值:255 1* 27 + 1* 26 + 1* 25 + 1* 24 + 1* 23 + 1* 22 + 1* 21 + 1* 20

有符号类型: 0111 1111 值:127 1* 26 + 1* 25 + 1* 24 + 1* 23 + 1* 22 + 1* 21 + 1* 20

同样是一个字节,无符号类型的最大值是255,而有符号类型的最大值是127。原因是有符号类型中的最高位被挪去表示符号了。

有符号类型的长处是它可以表示负数。虽然它的在最大值缩水了,却在负值的方向出现了伸展。我们仍用一个字节的数值对比:

无符号类型: 0 —————————–255

有符号类型: -128 ——— 0 ———- 127

二者能表达的数值的个数都是256个。无符号类型表达的是 0~255 这256个数,有符号类型表达的是 -128 ~ 127这256个数。

有符号类型的负数使用补码表示。

4. 原码、反码、补码

有 int 类型的数,值为5,那么,我们知道它在计算机中表示为:

00000000 00000000 00000000 00000101

如果是 -5,在计算机中如何表示? 负数以补码表达。

(1)原码:一个整数,按照绝对值转换成的二进制数,称为原码。

比如 00000000 00000000 00000000 00000101 是5和-5 的原码。

(2)反码:原码按位取反,就是反码。

取反操作指:1变0; 0变1

00000101每一位取反,得11111010。

(3)补码:补码=反码+1。

00000101 的反码是:11111010。

补码 = 11111010 + 1 = 11111011

-5在计算机中表达为:11111011。转换为十六进制:0xFB。

我们来看int型整数-1在计算机中如何表示:

1、先得原码: 00000001

2、得反码: 11111110

3、得补码: 11111111

-1在计算机里用二进制表达就是全1。16进制为:0xFF。

6、java中只有有符号的数据类型
那对于java的数据类型,我们就只有有符号的数据类型了,如short 的表示范围 -128到+127,这就是代表有符号的数据类型了。

java没有无符号类型,都是有符号类型的数据类型。但是其它语言,如c的unsigned short 无符号数,它值的范围就是要从0开始,并且比java的short类型保存的数据范围更大。

在实际开发中,可能要与c写的硬件接口,网络接口相互直接数据交互,此时由于java没有无符号的数据类型,导致java与c看似相同的数据类型,其实存储空间确是不同的,这个问题解决方法是java用更高的存储数据类型,如果c用int,你的java就要考虑用Long或者BigInteger了。还有一种方法就是用java的guava框架来实现你的目标了。你自个其实也可以写,但是容易出问题哦。


参考文章https://blog.csdn.net/android_bar/article/details/76571925
参考文章https://www.cnblogs.com/huzi007/p/6566567.html

有符号类型和无符号类型相关推荐

  1. [转载]C++ 中有符号类型到无符号类型的转换(C和C++程序员面试秘笈P9面试题6)...

    本文复制自https://blog.csdn.net/abnerwang2014/article/details/20656423,是为了自己以后查看方便才复制过来的,谢谢原博主. 为了更好地解释下面 ...

  2. C语言 有符号类型转换为无符号类型

    C语言中变量的类型变换比较多,有些地方需要时刻注意,不然很可能写出带有bug的代码并深埋入系统,难以察觉. 例如 有符号类型和无符号类型运算,有符号类型转换为无符号类型. 需要注意的有两种情况: 1. ...

  3. 负数时的有符号整型和无符号整型的转换

    目录 一.补码 二.负数时的有符号整型和无符号整型的转换 三.关于无符号的笔试题 一.补码 有符号数在计算机中存储,用数的最高位存放符号, 正数为0, 负数为1 例如:有符号数 1000 0011,其 ...

  4. 有符号拓展:signed-extending无符号拓展:unsigned-extending

    符号拓展 拓展意义 举个栗子 有符号拓展:signed-extending&无符号拓展:unsigned-extending 拓展意义 符号拓展的意义是产生位数拓展,数值不变的的结果.常见于不 ...

  5. C语言中无符号整型变量赋值负数,负数时的有符号整型和无符号整型的转换

    目录 一.补码 二.负数时的有符号整型和无符号整型的转换 三.关于无符号的笔试题 一.补码 有符号数在计算机中存储,用数的最高位存放符号, 正数为0, 负数为1 例如:有符号数 1000 0011,其 ...

  6. C++有符号整型和无符号整型的区别

    C++有符号整型和无符号整型的区别 C++中的整型分为有符号类型整型和无符号类型整型,区别如下. 在有符号类型中:最左边的位是符号位,余下的位是数值位.符号位为1,代表负数:符号位为0,则为正数.例如 ...

  7. C语言 有符号整型和无符号整型的比较

    C语言 有符号整型和无符号整型比较时,有符号整型自动转换成无符号整型,所以 10<-100 注意题给整数的范围,判断比较的整数类型

  8. C语言有符号整型和无符号整型的比较

    int s = -1; unsigned int u = 1; if(s < u) 这样比较的结果是:s>u,即出现-1>1 因为:在有符号整型和无符号整型的比较中,自动将有符号整型 ...

  9. 【汇编优化系列】关于符号扩展和无符号扩展(包括mips msa实现)

    DATE: 2021.11.26 文章目录 前言 1.参考 2.符号扩展和无符号扩展 含义 3.举例说明 4.mips msa相关指令 前言 在mips msa intrinsic工程优化过程中,遇到 ...

  10. 有符号整型和无符号整型

    有符号整型和无符号整型的区别在于怎样解释整数的最高位 对于无符号整型,其最高位被c编译器解释为数据位 对于有符号整型最高位解释为符号位 如果符号位为0则表示为正数 为1则表示为负数 对于具有相同数据位 ...

最新文章

  1. Flask-Email的相关知识点实现(发送电子邮件)
  2. Python爬虫的开发
  3. caffe源码解析—image_data_layer层
  4. nginx里面的rewrite重写模块详解
  5. 使用Powershell远程管理Windows Server(WinRM)
  6. “成功”没那么有道理
  7. Web API应用架构在Winform混合框架中的应用(3)--Winfrom界面调用WebAPI的过程分解...
  8. Oracle_PL/SQL(3) 游标
  9. 【ACL2021】分享三篇值得推荐的情感分析文章 -- 风格分析、幽默计算、情感类别...
  10. mysql忘记密码重新设置步骤详解
  11. poedit 图文教程 转载
  12. 1060显卡用什么软件测试,【影驰 GTX 1060 GAMER 显卡使用测试】频率|性能|软件_摘要频道_什么值得买...
  13. 又一个新概念——云编程(Cloud programming)
  14. 别做正常的傻瓜 读书笔记
  15. pythonplc曲线_启蒙篇-立志做PLC圈子里的IT大拿 | 利用VB编写程序读取PLC数据
  16. 建立集群——rsh(remote shell)实现无密码访问
  17. 百度网盘无限扩容技术,外面399,无论自己用还是用做引流都可以
  18. 手机连接投影机的步骤_手机怎么连接投影仪?这几招实用
  19. [转载]无线网络优化
  20. 机器学习之Matplotlib

热门文章

  1. 搜题接口 后台简单便捷功能强大
  2. 金蝶ERP服务器系统中间件,金蝶ERP_金蝶ERP软件_金蝶ERP系统_泛普软件
  3. 开通斐讯橙汁plus会员 获取白金奖励计划
  4. rust 蓝卡_rust蓝卡在哪里弄 | 手游网游页游攻略大全
  5. svg字体不能更改颜色
  6. zzulioj 1044: 不及格率
  7. C++ Socket UDP范例
  8. 诺基亚安卓手机_用诺基亚那个年代玩的Java游戏,现在终于能用安卓手机玩了...
  9. PS学习之如何绘制圆角图形
  10. 前端 css 鼠标自定义小箭头