python 处理网络帧时,CRC算法中整数按位取反运算(~)得到负数的规避方法

正数的原码,反码,补码都是相同的;负数原码转化为反码:符号位不变,数值位按位取反;负数原码转化为补码:符号位不变,数值位按位取反,末尾加一。

但是python不像C语言有无符号类型,python中一个整数x按位取反后,最高位的符号位:正负交换了,即正数变为负数,负数变为正数了。要实现单纯的按位取反,而不带符号,

可以通过与一个全1的数据按位异或实现。比如,你有一个16位的数据a,需要对它做按位取反,那么这样就行了:a ^= 0xffff

比如将如下C++ 算法用python替代:

C++ 代码:

python代码:

Original: https://www.cnblogs.com/fdzwdt/p/11423235.html
Author: fdzwdt
Title: python 处理网络帧时,CRC算法中整数按位取反运算(~)得到负数的规避方法

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/596479/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球