Python基础入门之二进制的负数

这篇具有很好参考价值的文章主要介绍了Python基础入门之二进制的负数。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

刚刚介绍了位运算符,里面涉及到了二进制的运算,出现了a = 60,~a = 1100 0011 = -61的计算,所以这里记录一下二进制的负数表示和计算。

二进制是计算技术中广泛采用的一种数制。二进制数据是用0和1两个数码来表示的数。

它的基数为2,进位规则是“逢二进一”,借位规则是“借一当二”,由18世纪德国数理哲学大师莱布尼兹发现。当前的计算机系统使用的基本上是二进制系统,数据在计算机中主要是以补码的形式存储的。计算机中的二进制则是一个非常微小的开关,用“开”来表示1,“关”来表示0。

在二进制码中,采用最高位是符号位的方法来区分正负数,正数的符号位为0、负数的符号位为1。二进制的负数表示,只要将原码正数的每位取反码,再在所得数的末位加1,则正好得到负数的补码,最后求得的补码即负数的二进制表示结果,这简称“取反加1”。

比如整数 -1,以8位二进制表示有符号数,正数:0000 0001,取反:1111 1110,补码:1111 1111,即 -1 = 1111 1111,有没有发现什么?

是的,会发现:正数+补码 = 0,即 1 + (-1) = 0,验证没问题。

下面通过另一种8位二进制的方式来解释。

十进制数字,在计算机中,是以二进制存储:

十进制 +0,二进制 0000 0000;

十进制 +1,加 1,二进制 0000 0001;

十进制 +2,加 1,二进制 0000 0010;

......

十进制 +127,加 1......就加到了 0111 1111;

负数怎么办? 你就从 0,依次递减吧。

十进制 0,以二进制 0000 0000 存放。

十进制 -1,减 1,得 1111 1111 = 255(十进制)。

十进制 -2,减 1,得 1111 1110 = 254。

十进制 -3,减 1,得 1111 1101 = 253。

......

十进制 -128,减 1......得 1000 0000 = 128。

不要再减了,这就是最小值了。

(再继续减,就是 0111 1111,这就是+127 了。)

因此,最小的负数是-128,存放的是 10000000。

总结:

  零和正数:直接用二进制存放。

  负数:存放形式是:256(8位情况下)+这个负数;

  这套存放格式,就是所谓的补码,即负数。

补码有什么用?

 利用补码,可以把减法运算,转换成加法。

例如:6-2 = 4,用补码运算如下:

    6 的表示是 0000 0110

 + -2 的补码是 1111 1110

-----------------

       (1) 0000 0100   (= 4 的补码)

 (括号中的 1,是进位,舍弃不要了。)

注意:

 如果运算结果超出了 -128~~+127 的范围,结果将是错的。

 这种现象称为“溢出”,再注意一下:进位,并不等于溢出。

因为补码的这个特性,所以,在计算机中,只是使用补码存放数据。

而原码、反码,在计算机中,都是不存在的。原码、反码的用途,仅仅是用于“笔算”。

其实,笔算的方法,并非只有“取反加一”。另外,-128,有补码,但是却没有原码反码!

所以无法用“取反加一”来求 -128 的补码。所以,大家,完全不必在原码反码 上浪费时间精力。

转载请注明,十分感谢~~文章来源地址https://www.toymoban.com/news/detail-407541.html

到了这里,关于Python基础入门之二进制的负数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 读数据压缩入门笔记02_二进制和熵

    2024年02月06日
    浏览(75)
  • Python中二进制十进制转换

            hello大家好,今天我想和大家分享一下在Python中进制转换加减法的方法。         比如现在我们需要求100 + 10,然后需要将结果110以二进制的形式返回,又或者我们现在有一个小需求,就是要计算二进制1010和二进制1011的和是多少,然后依旧以二进制的形式返回

    2024年02月16日
    浏览(36)
  • 大幅提升iOS编译速度的cocoapods二进制化插件介绍

    驾校一点通iOS项目是采用是cocoapods来管理组件的,又经过多年的组件化发展,目前组件已经达到了120+的数量。在这种组件规模下,主工程的打包时间也从最开始的几分钟增加到十几分钟(M1)、二十几分钟(Intel)。而且在频繁切换分支开发的场景下,每次编译的耗时成了制

    2024年02月08日
    浏览(46)
  • python十进制转二进制方法详解

      在 Python中,十进制数可以转换成二进制数。例如: 但是,十进制数不是直接转换成二进制,而是先转换成二进制数,再转换成十进制。接下来我们来看看具体的实现方法: 首先我们来看一个例子: 上面代码中,使用了循环遍历的方法。从这个例子中我们可以发现,需要遍

    2023年04月19日
    浏览(79)
  • Python读写二进制文件

    Python 读写文件的二进制数据需要使用到struct模块,进行C/C++与Python数据格式的转换。 struct模块中最常用的函数为pack和unpack,用法如下: 函数 return explain pack(fmt,v1,v2…) string 按照给定的格式(fmt),把数据转换成字符串(字节流),并将该字符串返回. pack_into(fmt,buffer,offset,v1,v2…) No

    2024年02月08日
    浏览(33)
  • PYTHON : 二进制 、 八进制 、十六进制的转换和输出

    十进制转换成其他进制 保存为文本串 二进制 bIn() 八进制 oct() 十六进制 hex() 不输出前缀 使用format函数 如果不想输出进制前面的 前缀符号 , 这时我们就要使用format函数 在这里我们要注意 , 二进制和八进制 的再format里的 符号是‘b’,‘o’ 而十六进制format 里的符

    2023年04月09日
    浏览(44)
  • HTML5 WebSocket介绍与基本使用(解析服务端返回的二进制数据)

    WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。 WebSocket 使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在 WebSocket API 中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行

    2024年02月15日
    浏览(30)
  • Mysql错误日志、通用查询日志、二进制日志和慢日志的介绍和查看

    目录 一.日志 1.日志和备份的必要性 2.mysql的日志类型 (1)错误日志 (2)通用查询日志 (3)二进制日志 (4)慢日志   在数据库保存数据时,有时候会因为误删除数据库,意外断电或程序意外终止,由于病毒造成的数据库损坏或丢失,文件系统损坏后,系统进行自检操作,

    2024年02月15日
    浏览(27)
  • 【人工智能的数学基础】二进制乘法的Mitchell近似

    使用Mitchell近似构造加法神经网络. paper:Deep Neural Network Training without Multiplications arXiv:link 本文通过 Mitchell 近似算法将乘法运算转变为加法运算,从而降低了神经网络中的乘法的运算量。 Mitchell 近似是一种在二进制下近似的 快速对数 和 指数 计算方法。对于一个十进制的非

    2024年02月08日
    浏览(32)
  • chatgpt赋能python:Python怎么转二进制?

    Python是一门程序编程语言,它的灵活性、可读性和跨平台性使其在科学计算、数据分析、Web开发和机器学习等领域广受欢迎。在Python中,我们可以用二进制数来表示数据,让数据更加紧凑且易于计算。本文将详细介绍Python怎样转换二进制数,并提供实用技巧和相关示例。 在

    2024年02月10日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包