二进制补码-反码-原码「建议收藏」

二进制补码-反码-原码「建议收藏」最近学习java基础语法的时候,对其基本数据结构中的二进制位数与十进制大小间的转换产生了疑惑,想起学习IP地址的时候也貌似产生了相同的困惑,所以干脆总结一下,权当学习及备忘了。在计算机内,定点数有

大家好,又见面了,我是你们的朋友全栈君。

最近学习java基础语法的时候,对其基本数据结构中的二进制位数与十进制大小间的转换产生了疑惑,想起学习IP地址的时候也貌似产生了相同的困惑,

所以干脆总结一下,权当学习及备忘了。

在计算机内,定点数有3种表示法:原码反码补码
原码:就是二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。
反码:表示法规定:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。
补码:表示法规定:正数的补码与其原码相同;负数的补码是在其反码的末位加1。

首先需要明确是java中是用补码表示二进制数,补码的最高位是符号位,最高位为“0”表示正数,最高位为“1”表示负数。
正数补码为其本身;
负数补码为其绝对值各位取反加1;(这里还记得“若干年”前C语言老师说的一句“各位取反,末位加一”。。。)

例如:
+21,其二进制表示形式是00010101,则其补码同样为00010101
-21,按照概念其绝对值为00010101,各位取反为11101010,再加1为11101011,即-21的二进制表示形式为11101011

步骤:
1、byte为一字节8位,最高位是符号位,即最大值是01111111,因正数的补码是其本身,即此正数为01111111
可以借助等比数列的求和公式,得到其十进制表示形式为(2^7-1)即127
2、最大正数是01111111,那么最小负是10000000(最大的负数是11111111,即-1)

需要强调的是,由于正数的原码、补码都一样,求其十进制大小的时候无需转换(所以也容易产生混淆),

而负数则不同。此处的最大正数01111111和最小负数10000000都是补码形式(java的语言规定。。)

3、10000000是最小负数的补码表示形式,我们把补码计算步骤倒过来就即可。10000000减1得01111111然后取反10000000
因为负数的补码是其绝对值取反,即10000000为最小负数的绝对值,而10000000的十进制表示是128,所以最小负数是-128
4、由此可以得出byte的取值范围是-128到+127

对于负数而言,需要掌握两种情况:知道其大小(十进制值),求补码;知道其补码,求其大小。

一个十进制负数转换成其二进制补码表示的时候,步骤为:

  负数—>正数(取绝对值)—->二进制补码—(末位减一,各位取反)>二进制原码

  -128          128                        1000 0000                 0111 1111               1000 0000

 

二进制补码-反码-原码「建议收藏」

 

二进制补码-反码-原码「建议收藏」

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/155368.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • Qt Quick之Canvas

    QML中的Canvas,俗称画布,它用来定义一个绘图区域,可以使用ECMAScript代码来绘制直线,矩形,贝塞尔曲线,弧线,图片,文字等图元,还可以为这些图元应用填充颜色和边框颜色,甚至还可以进行低

    2021年12月29日
  • 精选目标检测3——yolo1、yolo2、yolo3和SSD的网络结构汇总对比

    精选目标检测3——yolo1、yolo2、yolo3和SSD的网络结构汇总对比学习前言各个网络的结构图与其实现代码1、yolo12、yolo23、yolo34、SSD总结学习前言……最近在学习yolo1、yolo2和yolo3,事实上它们和SSD网络有一定的相似性,我准备汇总一下,看看有什么差别。各个网络的结构图与其实现代码1、yolo1在这里插入图片描述由图可见,其进行了二十多次卷积还有四次最大池化,其中3×3卷积用于提取特征,1×1卷积用于压缩特征,最后将图像压缩到7x7xfilter的大小,相当于将整个图像划分为7×7

  • Python_note_003(Python中的输入函数input()、运算符用法)「建议收藏」

    Python_note_003(Python中的输入函数input()、运算符用法)「建议收藏」输入函数input()作用:接收来自用户的输入返回值类型:输入值的类型为str值的存储:使用=对输入的值进行存储#输入函数inputpre=input('你叫什么名字?')

  • Android项目中最火最常用的优秀开源项目

    Android项目中最火最常用的优秀开源项目

  • 指针函数与函数指针

    指针函数与函数指针1.指针函数先看下面的函数声明,注意,此函数有返回值,返回值为int*,即返回值是指针类型的。int*f(inta,intb);上面的函数声明又可以写成如下形式:int*f(inta,intb);让指针标志*与int紧贴在一起,而与函数名f间隔开,这样看起来就明了些了,f是函数名,返回值类型是一个int类型的指针。下面看指针函数的实现:in

  • Longest Common Prefix_LeetCode

    Longest Common Prefix_LeetCode1.思路:求strs数组的长度,当len==0,len==1分开考虑;i从1-min_len,以strs[0][i]作为对照,一旦出现strs[j][i]!=strs[0][i],结束循环,则输出之前判断好了的字符串。 classSolution:deflongestCommonPrefix(self,strs):""":typestrs…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号