要获得与C类型转换相等的值,只需按位并使用适当的掩码。e、 g.如果unsigned long是32位:>>> i = -6884376

>>> i & 0xffffffff

4288082920

或者如果是64位:>>> i & 0xffffffffffffffff

18446744073702667240

请注意,尽管这给了您在C中的值,但它仍然是一个有符号的值,因此任何后续计算都可能会给出负结果,您必须继续应用掩码来模拟32位或64位计算。

这是因为尽管Python看起来将所有数字存储为符号和大小,但按位操作定义为处理两个补码的值。C以两个补码存储整数,但位数固定。Python按位运算符作用于两个补码值,但好像它们有无限个位:对于正数,它们用零向左扩展到无穷大,而负数用一向左扩展。&运算符将把左边的一个字符串改为零,只留下适合C值的位。

以十六进制显示值可能会更清楚(我将f的字符串重写为一个表达式,以显示我们对32位或64位感兴趣):>>> hex(i)

'-0x690c18'

>>> hex (i & ((1 << 32) - 1))

'0xff96f3e8'

>>> hex (i & ((1 << 64) - 1)

'0xffffffffff96f3e8L'

对于C中的32位值,正数将上升到2147483647(0x7fffffff),负数的顶部位集将从-1(0xffffffff)下降到-2147483648(0x8000000)。对于完全符合掩码的值,我们可以使用较小的掩码移除符号位,然后减去符号位,从而在Python中反转该过程:>>> u = i & ((1 << 32) - 1)

>>> (u & ((1 << 31) - 1)) - (u & (1 << 31))

-6884376

或者对于64位版本:>>> u = 18446744073702667240

>>> (u & ((1 << 63) - 1)) - (u & (1 << 63))

-6884376

如果符号位为0,则此逆过程将保持值不变,但显然它不是真正的逆过程,因为如果以不符合掩码大小的值开始,则这些位将消失。

python中定义无符号整数_在python中如何将有符号整数转换为无符号整数相关推荐

  1. python数据类型定义为_一Python 数据类型

    变量.字符编码 1:声明变量: #_*_coding:utf-8_*_ #__author__:"shikai" name="shikai" #变量名:name ...

  2. python中定义无符号整数_如何在python中将有符号整数转换为无符号整数

    假设: >你有2'补码表示;和, > By(unsigned long)表示无符号32位整数, 那么你只需要向负值添加2 ** 32(或1 <<32). 例如,将此值应用于-1 ...

  3. python函数定义错误_[转载]python之函数的使用及异常处理2021.1.30

    2.1 定义函数 def 函数名(参数): 代码1 代码2 ...... 2.2 调⽤函数 函数名(参数) 注意: 1. 不同的需求,参数可有可⽆. 2. 在Python中,函数必须先定义后使⽤. 2 ...

  4. python如何定义矩阵_基础 | Python下的矩阵定义 (下)

    关键词:线性代数 / 矩阵 / 基本定义 矩阵对于算法就如同人对于食物般的关系,已经到了密不可分的状态了,在神经网络里,矩阵代表了每层神经元之间的链接,在集成算法里,矩阵记录了每次分类器更新的残差,在 ...

  5. div中定义局部变量_说说 Go 中的变量(附粗制滥造面试题)

    和其他语言没有区别,Go 中的数据也是两种表示方式,常量和变量,本文先说说变量吧. 为了增加文章的趣味性(多掉些头发),搜集了一些常见的面试题.部分是自己瞎编的,顺便为自己明年可能到来的面试做些准备. ...

  6. 有符号整数与无符号整数相加问题

    运行下面代码,输出的结果是: #include<stdio.h>int main() {unsigned int a = 1;signed int b = -3;int c;(a + b ...

  7. python封装什么意思_封装 · Python · 看云

    #### 封装:隐藏对象的属性和实现细节,仅对外提供公共访问方式. #### 好处: 1\. 将变化隔离: 2\. 便于使用: 3\. 提高复用性: 4\. 提高安全性: #### 封装原则: 1,将 ...

  8. python函数的特性_深入Python函数编程的一些特性

    绑定 细心的读者可能记得我在 第 1 部分的函数技术中指出的限制.特别在 Python 中不能避免表示函数表达式的名称的重新绑定.在 FP 中,名称通常被理解为较长表达式的缩写,但这一说法暗示着&qu ...

  9. python做excel宏_利用Python 开发 Excel 宏脚本的神器!

    今天介绍一个叫 xlpython 的库,通过它我们可以用 Python 来开发 Excel 的宏脚本,真正实现在 Excel 中调用 Python. 基本环境 操作系统:Windows 10 x64 ...

最新文章

  1. 2020这一年,我完成了这几件大事
  2. xgboost进行分类具体实现
  3. 2013年上半年网络工程师真题
  4. java 远程调试超时_java 远程调试
  5. android制作相册浏览器_电脑上用什么软件做电子相册
  6. vb红绿灯自动切换_VB红绿灯程序.doc
  7. 优化网页代码提高网页访问速度
  8. java.lang.ExceptionInInitializerError解决办法
  9. 【FFMPEG系列】之查看FFMPEG版本号
  10. 计算机系统操作中级工试题及答案,计算机系统操作中级工试题附答案.doc
  11. CS5211,CS5212,CS5256,CS5811,CS5288资料
  12. AMD处理器的发展历程
  13. ASP.NET MVC form表单提交
  14. esp8266_deauther将html压缩成字节码
  15. 阿里云IOT设备数据接入 (从阿里云IOT云平台获取设备数据)
  16. 未成年人勿进 谨以献给1980~1990出生的人(五)
  17. Unity相机漫游脚本
  18. 2345恶意篡改修复
  19. 计算机桌面刷新位置不可用,Win10开机提示桌面位置不可用的三种解决办法
  20. 浙大PTA基础编程题目集:7-1 厘米换算英尺英寸

热门文章

  1. IDEA TKK: 更新 TKK 失败,请检查网络连接
  2. 【dsPIC33】多路ADC同时采样
  3. 2021十大国际黄金交易APP平台排名一览
  4. 写给青云十周年的散文诗
  5. 学生求职简历表-Word简历可编辑下载
  6. VINS 细节系列 - 坐标转换关系
  7. 万科蓝山居民私改乱建,小区园林遭破坏无人管理
  8. (一)CAS是什么?
  9. docker-compose 参数命令详解
  10. LXD 2.0 系列(三):你的第一个 LXD 容器