判断某个整数是否为2的次方数

简介: var  j: Integer;begin  j := StrToInt(edt1.Text);  if (j > 1) and ((j and (j - 1)) = 0) then    ShowMessage('是2的次方数');   1.

var
  j: Integer;
begin
  j := StrToInt(edt1.Text);
  if (j > 1) and ((j and (j - 1)) = 0) then
    ShowMessage('是2的次方数');

 

1. (j and (j - 1))
   这部份条件里的and是进行位与运算
   这里假设j符合条件(4)
   0100 = 4 (j)
   0011 = 3 (j-1)
   ----AND
   0000 = 0
   *符合条件的整数(1和0除外)经过这样运算结果为0
   ((j and (j - 1)) = 0)就比较好理解了

2. (j > 1)
   理解了(1),这里就比较好理解.

 

目录
相关文章
|
8月前
|
算法
给定两个数,求这两个数的最大公约数
给定两个数,求这两个数的最大公约数
|
4月前
|
机器学习/深度学习 网络协议 Windows
几个数相加
几个数相加。
75 4
|
8月前
|
Python
计算小于或等于n的非负整数区间包含的1的数量
计算小于或等于n的非负整数区间包含的1的数量
75 0
|
算法
判断一个数是否能被3或5整除
判断一个数是否能被3或5整除
172 0
|
Python
判断一个数能否同时被4和5整除
判断一个数能否同时被4和5整除
102 0
打印0~100000之间的水仙花数, 水仙花数指一个n位数,其各位数的n次方之和正好等于该数本身
打印0~100000之间的水仙花数, 水仙花数指一个n位数,其各位数的n次方之和正好等于该数本身
121 0
面试官:判断一个数是否为2的整数次幂
面试官:判断一个数是否为2的整数次幂
08:判断一个数能否同时被3和5整除
08:判断一个数能否同时被3和5整除
170 0
判断是否为2的次幂
判断是否为2的次幂
103 0