当我进入bin(-3)它只是显示-0b11.
这不是我想要的.它只保留该-符号并转换数字.我想要负数的实际表示.
python中是否有任何方法可以做到这一点?
我知道,
(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.
我该怎么做才能避免这种情况?
如何补充具有前导零位的数值,以便前导零位保持为零,剩余的1位和0位将被补充?我想仅通过按位运算来执行此操作,而不必检查该值以确定该值中有多少前导零位.我可以使用哪些按位运算来仅隔离包含一个位或位打开的值的最低有效部分,并仅补充值的那部分,使前导零位保持不变.
例如,给出一个数字,比如9.
9将以无符号32位二进制形式表示为00 ... 01001.
为简单起见,请仅考虑8位形式.9 = 00001001
现在当我补充这个数字时,我会得到11110110.
但这不是我想要的.
我希望原始表示的前导0保持不变,并补充其余部分.
即对于9 = 00001001,前4个零应该保持为零,下一部分应该被称赞.所以我将有00000110即6.
我知道一个更长的方法:
bxb位要么
(0xFF<<b)从x