-128的二进制怎么表示

2024-05-24 01:58
文章标签 怎么 二进制 表示 128

本文主要是介绍-128的二进制怎么表示,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

-128的二进制表示

    今天看到8位2进制表示的范围是-128-127。原来没有想过为什么是这个范围,仔细一想,奇怪呀,-128是怎么表示的。127是0111 1111,而-128为什么是1000 0000呢,这不是-0吗?于是就有了下文要说的一些内容。

STEP1

    为了从根本上明白-128为什么是1000 0000,我们需要从一个叫【模】的东西讲起,并且把你原来关于原码补码反码的一些东西都暂时忘掉。
‘模’是什么,简单来讲就是一个范围内的极限。举一个经典的例子,我们日常生活中的12个刻度的时钟,它表示0-12小时。假设它现在处于2的位置,如果你要让它减少4个小时,到10的位置,你会怎么做?把时钟顺时钟按照3,4,5的方向转8个小时?还是按照1,12,11的方向逆时针转动转4个小时?这2者的结果都是一样的,让时钟到了10的位置。
    我们来看一下,一个是拨了8小时,一个是拨了4小时,8+4=12,12-8=4。一个时钟一圈12个小时,也就是说最大的表示上限是12。往前8小时和往后12-8=4小时效果是一样的。而这个12就是所谓的【模】。在模的范围内,+某个数X与+模-|x|的效果是一样的。举个例子
十进制的数,20 和 80 ,两者相加是100,100为模,那么我们50-20 =30,与50+80=130,如果去除百位上的数字,在模(100)的范围内,是不是都是30,结果相同。也就是X -Y = X+(模-|Y|)。
没错吧。不过上面我们是 大-小,如果是 小-大呢?怎么表示。

|
|
|
↓
STEP2

    还是20这个数字,按照原来是思路10-20=-10,10+(100-20)=90,不相等了对吧,这可怎么办?我们伟大的前人想到了一个办法,将负数用它的绝对值的补数表示也就是“模-|负数x|” 表示。也就是【模】-|负数|,100-|-10|=90;这样是不是就很完美了,可以表示负数了!
    不过这里还存在一个问题,既然-10可以用90表示了,那么原本的90该怎么表示呢?很直接,模范围内一分为二,0-49表示正数,50-99表示负数。

|
|
|
↓
STEP3

    好了,回到-128上。对于8进制的2进制数,模是2的八次,256。如果抛开负数,我们能表示0-255没问题吧。现在我们把0255进行对半分,0-127以及128-255.像上面所说的100一样,,0-127表示正数,128255表示负数补数的负值,也就是说128~255为【模】-|负数x|后的值,256-|-128|=128,256-|-1|=255。到这里你应该明白为什么八位2进制数能够表示的范围是-128-127了吧。 需要注意的是,以上这些运算都需要在-128~127的范围内,这里所谓的负数的二进制码就是它们的补码,不然会产生溢出,也就不符合这个逻辑了。
    接下来我们再看看为什么-128的表示是1000 0000。我们是用256-|-128|=128去表示-128的,128的补码就是1000 0000,这也就是为什么-128是用1000 0000表示了。
    最后说一下计算机是怎么求这个补码的。负数在计算机中都是用补码存储表示的,当我们输入一个负数的时候,计算机还是要用 模-绝对值来求对应的补码,可是计算机只有加法,为了求这个对应的补码,计算机会将原码首位不变,其余位取反然后加1来求这个补码,-128没有原码和反码,只有补码。换个角度考虑,负数的补码就是其绝对值源码+1,-128就是128的原码10000000求反0111 1111 +1 -》1000 0000

参考:https://www.zhihu.com/question/20458542/answer/40759880

这篇关于-128的二进制怎么表示的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/997052

相关文章

电脑开机提示krpt.dll丢失怎么解决? krpt.dll文件缺失的多种解决办法

《电脑开机提示krpt.dll丢失怎么解决?krpt.dll文件缺失的多种解决办法》krpt.dll是Windows操作系统中的一个动态链接库文件,它对于系统的正常运行起着重要的作用,本文将详细介绍... 在使用 Windows 操作系统的过程中,用户有时会遇到各种错误提示,其中“找不到 krpt.dll”

MySql死锁怎么排查的方法实现

《MySql死锁怎么排查的方法实现》本文主要介绍了MySql死锁怎么排查的方法实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录前言一、死锁排查方法1. 查看死锁日志方法 1:启用死锁日志输出方法 2:检查 mysql 错误

如何将二进制文件流转化为MockMultipartFile文件

《如何将二进制文件流转化为MockMultipartFile文件》文章主要介绍了如何使用Spring框架中的MockMultipartFile类来模拟文件上传,并处理上传逻辑,包括获取二进制文件流、创... 目录一、名词解释及业务解释1.具体业务流程2.转换对象解释1. MockMultipartFile2

Rsnapshot怎么用? 基于Rsync的强大Linux备份工具使用指南

《Rsnapshot怎么用?基于Rsync的强大Linux备份工具使用指南》Rsnapshot不仅可以备份本地文件,还能通过SSH备份远程文件,接下来详细介绍如何安装、配置和使用Rsnaps... Rsnapshot 是一款开源的文件系统快照工具。它结合了 Rsync 和 SSH 的能力,可以帮助你在 li

电脑密码怎么设置? 一文读懂电脑密码的详细指南

《电脑密码怎么设置?一文读懂电脑密码的详细指南》为了保护个人隐私和数据安全,设置电脑密码显得尤为重要,那么,如何在电脑上设置密码呢?详细请看下文介绍... 设置电脑密码是保护个人隐私、数据安全以及系统安全的重要措施,下面以Windows 11系统为例,跟大家分享一下设置电脑密码的具体办php法。Windo

怎么关闭Ubuntu无人值守升级? Ubuntu禁止自动更新的技巧

《怎么关闭Ubuntu无人值守升级?Ubuntu禁止自动更新的技巧》UbuntuLinux系统禁止自动更新的时候,提示“无人值守升级在关机期间,请不要关闭计算机进程”,该怎么解决这个问题?详细请看... 本教程教你如何处理无人值守的升级,即 Ubuntu linux 的自动系统更新。来源:https://

Ubuntu系统怎么安装Warp? 新一代AI 终端神器安装使用方法

《Ubuntu系统怎么安装Warp?新一代AI终端神器安装使用方法》Warp是一款使用Rust开发的现代化AI终端工具,该怎么再Ubuntu系统中安装使用呢?下面我们就来看看详细教程... Warp Terminal 是一款使用 Rust 开发的现代化「AI 终端」工具。最初它只支持 MACOS,但在 20

LinuxMint怎么安装? Linux Mint22下载安装图文教程

《LinuxMint怎么安装?LinuxMint22下载安装图文教程》LinuxMint22发布以后,有很多新功能,很多朋友想要下载并安装,该怎么操作呢?下面我们就来看看详细安装指南... linux Mint 是一款基于 Ubuntu 的流行发行版,凭借其现代、精致、易于使用的特性,深受小伙伴们所喜爱。对

macOS怎么轻松更换App图标? Mac电脑图标更换指南

《macOS怎么轻松更换App图标?Mac电脑图标更换指南》想要给你的Mac电脑按照自己的喜好来更换App图标?其实非常简单,只需要两步就能搞定,下面我来详细讲解一下... 虽然 MACOS 的个性化定制选项已经「缩水」,不如早期版本那么丰富,www.chinasem.cn但我们仍然可以按照自己的喜好来更换

Ubuntu 怎么启用 Universe 和 Multiverse 软件源?

《Ubuntu怎么启用Universe和Multiverse软件源?》在Ubuntu中,软件源是用于获取和安装软件的服务器,通过设置和管理软件源,您可以确保系统能够从可靠的来源获取最新的软件... Ubuntu 是一款广受认可且声誉良好的开源操作系统,允许用户通过其庞大的软件包来定制和增强计算体验。这些软件