技术论坛

 字节里面有多少个1?问过这个问题的都来签个名。

返回主题列表
作者 主题
芳季
至圣

经验值: 66284
发帖数: 14658
精华帖: 100
楼主    2020-11-14 18:13:47
主题:字节里面有多少个1?问过这个问题的都来签个名。 精华帖 

SUBROUTINE_BLOCK on的个数:SBR0

TITLE=子程序注释

VAR_INPUT

首址指针:DWORD;

连续数:BYTE;

END_VAR

VAR_OUTPUT

个数:WORD;

END_VAR

VAR

临B1:BYTE;

临W1:WORD;

临W2:WORD;

连续数W:WORD;

END_VAR

BEGIN

Network 1 

// 程序段注释

LD     SM0.0

BTI    LB4, LW12

MOVW   0, LW5

Network 2 

LD     SM0.0

FOR    LW10, 1, LW12

Network 3 

LD     SM0.0

MOVB   *LD0, LB7

INCD   LD0

Network 4 

LD     SM0.0

FOR    LW8, 1, 8

Network 5 

LD     SM0.0

RLB    LB7, 1

A      SM1.1

INCW   LW5

Network 6 

NEXT

Network 7 

NEXT

END_SUBROUTINE_BLOCK

改天有时间再回来完善这个程序。

有问题的先留个言。日后处理。下班。

wege97
侠圣

经验值: 2652
发帖数: 428
精华帖: 0
1楼    2020-11-14 18:28:12
主题:回复:字节里面有多少个1?问过这个问题的都来签个名。
签到,手边没有电脑。能直接转成梯形图吗?
懒是人类前进的动力
看雪001
至圣

经验值: 19297
发帖数: 2065
精华帖: 72
2楼    2020-11-14 18:49:09
主题:回复:字节里面有多少个1?问过这个问题的都来签个名。

300以上的有个库指令bitSum,1500版块前两天也有人问怎样用scl编写求幂运算,只不过求以2为底数的幂可以反过来字节或字里有多少个0(右移到1停止计数),回帖也有以200smart的梯形图,也是以右移溢出sm1.1为标志累加。

1500的exp增加了expt指令,可以不限于以e为底数求幂。

大道至简,知易行难
芳季
至圣

经验值: 66284
发帖数: 14658
精华帖: 100
3楼    2020-11-15 08:18:10
主题:回复:字节里面有多少个1?问过这个问题的都来签个名。

复制楼主全部程序内容(你应该知道最后两行不是程序内容吧)。在桌面新建一个文本文件(*.txt),粘贴进去,保存,关闭。修改扩展名txt成awl。打开编程软件,导入,找到桌面这个awl文件。导入后将会看到多了一个子程序。把子程序登记为库程序,以后方便调用。

程序以字节为单位,255以内个连续字节,计算全体on的个数。

程序不检测间接寻址错,间接寻址能找到的字节都可以计算。



蓝色的小尾巴
侠士

经验值: 1341
发帖数: 216
精华帖: 5
4楼    2020-11-16 08:36:45
主题:回复:字节里面有多少个1?问过这个问题的都来签个名。
貌似就这些方法吧
羊羊羊爱吃灰太狼
侠客

经验值: 738
发帖数: 86
精华帖: 1
5楼    2020-11-16 16:35:25
主题:回复:字节里面有多少个1?问过这个问题的都来签个名。

好好学习天天向上,谢谢楼主

锋言锋语
至圣

经验值: 23511
发帖数: 3323
精华帖: 51
7楼    2020-11-16 21:02:35
主题:回复:字节里面有多少个1?问过这个问题的都来签个名。

这个问题据说是华为还是哪个公司的面试题, 
m是一个32位整数;


  1.   奇数位右移1, 和 偶数位的值相加, 得到每两位的1的个数的分布;

      m = (m & 0xAAAAAAAA) >> 1+ (m & 0x55555555);

  2. 按每两位分组, 奇数组右移2, 和 偶数组的值相加, 得到每四位1的分布;

     m = (m & 0x CCCCCCCC)  >> 2 + (m & 0x33333333);

  3. 按每四位分组, 奇数组右移4, 和偶数组相加, 得到每8为位1的分布;

    m = (m & F0F0F0F)) >> 4 + (m & 0x0F0F0F0F0F);

     4.每8??位 分组, 奇数组右移动8, 和偶数组相加, 得到每16位1的分布

        m = m ( & FF00FF00) >> 8 + (m & 0x00FF00FF);

     5.

      m的高低字相加, 就是m的1的个数;

不忘初心
holdkcsxyz
至圣

经验值: 12949
发帖数: 1803
精华帖: 22
8楼    2020-11-16 22:24:36
主题:回复:字节里面有多少个1?问过这个问题的都来签个名。
Mark,谢谢分享能用到时就方便了!
Laohuai
至圣

经验值: 17410
发帖数: 6227
精华帖: 18
10楼    2020-11-18 17:01:20
主题:回复:字节里面有多少个1?问过这个问题的都来签个名。

一个字节多少位,我是这样算的



您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。