查看: 1208|回复: 8
收起左侧

[应用问题] 请问一个bit为啥要占用一个byte。空了七个去哪儿了

徐旭静 2022-2-25 17:10:55 | 显示全部楼层 |阅读模式
邀请回答

马上注册,享受更多特权

您需要 登录 才可以下载或查看,没有帐号?立即注册   

x
请问一个bit为啥要占用一个byte。空了七个去哪儿了
b7a4e80667cf5a8f8bfab71e6511d85.png
2393b5598a56f9a6f97a0ef1a6d3216.png




上一篇:不能直接打开工程文件
下一篇:新手求助

已有 0 人打赏作者

回复 邀请回答送花

使用道具 举报

laoyang 2022-2-26 11:37:20 | 显示全部楼层
首先,你这个问题问的很好,非常值得表扬下,你对3S理解加深了。说下我知道的一点知识
1.3S软PLC,所有的数据放在内存条上。目前HC用的LINUX系统。系统能访问到的内存最小单位BYTE.所以一个BOOL,能储存的最小单位就是BYTE。
2.bit只能在结构体中使用。
综上,BOOL量储存单位只能是BYTE。大小8bit。
以上只是我个人对HC的理解。请甄别。
回复 送花

使用道具 举报

博阿成 2022-2-27 08:23:45 | 显示全部楼层
bit是数据,0和1,BOOL是逻辑,真和假,可以 用1和0代表真和假的状态。这两个是完全不同的数据格式。IEC61131中,没有bit这个是数据类型,最小的就是BOOL,8位数据类型只有byte,sint,usint和字符串string。实际不用纠结这个问题,一般情况下常用的数据类型就那几种,bool,word ,  int ,time,real 。  实际现在C#中已经不能用1和0代表真和假,必须写false和 teue,养成良好的习惯就行了。
回复 送花

使用道具 举报

Slimming 2022-2-27 10:04:16 | 显示全部楼层
简单来说,计算机系统最小储存单元是8位的byte,所以定义bool变量的时候,会至少占用byte字节的第1位,至少其余的没用到。最小储存单元是byte,最小计算单元是bit
回复 送花

使用道具 举报

zpwzpw 2022-2-27 14:22:15 来自手机 | 显示全部楼层
Slimming 发表于 2022-2-27 10:04
简单来说,计算机系统最小储存单元是8位的byte,所以定义bool变量的时候,会至少占用byte字节的第1位,至少 ...

现在不说计算机,那请问codesys联合体的存在有何用??欧姆龙能做到,汇川为什么做不到??
回复 送花

使用道具 举报

Slimming 2022-2-28 21:31:28 | 显示全部楼层
zpwzpw 发表于 2022-2-27 14:22
现在不说计算机,那请问codesys联合体的存在有何用??欧姆龙能做到,汇川为什么做不到?? ...

联合体主要是基于高级语言,以C语言为例,在C语言的联合体、结构体中可以定义到固定的位,然后通过联合体调用到这个位,strcut{int a:4;}即是定义了4位的结构体变量,也就是说可通过结构体来实现位的定义,但是codesys的环境不支持位的定义,且对于结构体的定义环境做了太多限制。
另外联合体的作用不只是用于位的定义,还可用于字节交换、根据内存判断变量类型等。codesys对于dut类型的限制太多了,确实非常难用。
回复 送花

使用道具 举报

HcT490 2022-11-14 11:48:44 | 显示全部楼层
zpwzpw 发表于 2022-2-27 14:22
现在不说计算机,那请问codesys联合体的存在有何用??欧姆龙能做到,汇川为什么做不到?? ...

用.0   .1  .2  .3   点XX 可以解决你说的bit吗
回复 送花

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册   

本版积分规则

有技术问题,就上汇川技术社区

INOVANCE汇川技术 公众号

扫码下载掌上汇川APP

全国服务热线:8:30-17:30

4000-300124

苏州地址:江苏省苏州市吴中区越溪友翔路16号

深圳地址:深圳市龙华新区观澜街道高新技术产业园汇川技术总部大厦

Copyright © 2003-2100 汇川技术 Powered by Discuz! X3.4 ( 苏ICP备12002088号 )
快速回复 返回列表 返回顶部