如何在Python中剥离二进制数的左侧?

时间:2018-11-25 22:35:57

标签: python binary

我得到了这个二进制数字// delete value from the end of the list int DeleteEndVal(){ if(CheckListEmpty() == true){ cout << "Empty list. Nothing to delete." << endl; return -1; } else{ int val; Node *prev; Node *cur; if(head->next == NULL){ val = tail->data; head = NULL; tail = NULL; } else{ prev = head; cur = head->next; while (cur->next != NULL){ prev = prev->next; cur = cur->next; val = cur->data; } prev->next = NULL; free(cur); } return val; } }

我需要剥离8个最高有效位,并在末尾加上101111111111000

我试图制作11111000,但这导致101111111111000 << 8,它与10111111111100000000000的效果不一样,后者剥离了较低的位。那怎么办呢?最终结果必须为二进制类型。

3 个答案:

答案 0 :(得分:1)

您可以使用按位与运算符来获取整数n的最右边8位:

n&255

255是最小的8位值的总和。

因此,从101111111111000(十进制为24568)开始,n&255得到11111000,十进制为248。

答案 1 :(得分:1)

另一种通用的方法是:

n = int('101111111111000', 2) # 24568

n & (1 << int.bit_length(n) - 8) - 1

提供120(或1111000

答案 2 :(得分:0)

要实现x位数字n的实现,可以使用

x&(2**(len(bin(x))-2-8)-1)

-2剥离0b,-8剥离最左侧

简单地说,ands就是您的电话号码,1足以使最左边的8位设置为0。