小编Bha*_*not的帖子

如何在python中获得负数的二进制表示

当我进入bin(-3)它只是显示-0b11.

这不是我想要的.它只保留该-符号并转换数字.我想要负数的实际表示.

python中是否有任何方法可以做到这一点?

python bit

6
推荐指数
1
解决办法
8660
查看次数

如何避免模乘的溢出?

我知道,

(a*b)%m = ((a%m)*(b%m))%m
Run Code Online (Sandbox Code Playgroud)

但是有可能溢出.为简单起见,假设整数大小为2位.如果a = 2(即10 2)且b = 2(即10 2),m = 3(即11 2),那么%m和b%m结果为2并且在乘法后,答案为4(即100)不适合整数大小.如果从4开始考虑2-lsb,则最终答案将为0.但实际答案为1.

我该怎么做才能避免这种情况?

c math overflow modular-arithmetic

5
推荐指数
1
解决办法
1172
查看次数

如何使用按位运算补充最右边的位,保持前导零位为零?

如何补充具有前导零位的数值,以便前导零位保持为零,剩余的1位和0位将被补充?我想仅通过按位运算来执行此操作,而不必检查该值以确定该值中有多少前导零位.我可以使用哪些按位运算来仅隔离包含一个位或位打开的值的最低有效部分,并仅补充值的那部分,使前导零位保持不变.

例如,给出一个数字,比如9.

9将以无符号32位二进制形式表示为00 ... 01001.

为简单起见,请仅考虑8位形式.9 = 00001001

现在当我补充这个数字时,我会得到11110110.

但这不是我想要的.

我希望原始表示的前导0保持不变,并补充其余部分.

即对于9 = 00001001,前4个零应该保持为零,下一部分应该被称赞.所以我将有00000110即6.

我知道一个更长的方法:

  1. 查找给定数字的位数 b
  2. 找到给定数字的补充说 x
  3. 提取最后b

要么

  1. 减去(0xFF<<b)x

c bit-manipulation bit

3
推荐指数
1
解决办法
2119
查看次数

标签 统计

bit ×2

c ×2

bit-manipulation ×1

math ×1

modular-arithmetic ×1

overflow ×1

python ×1