DCL ATTR BIT(18); SUBSTR(WK_OFF->ATTR,7,1) = '1'B ; ATTR的值是多少 怎么计算的 PL/1
时间: 2024-03-01 18:56:05 浏览: 23
在 PL/1 中,BIT(n) 定义了一个长度为 n 位的位字符串(bit string),可以存储 0 或 1。因此,在声明 ATTR 变量时,BIT(18) 表示 ATTR 变量有 18 个二进制位。
在代码中,SUBSTR(WK_OFF->ATTR,7,1) = '1'B 语句将 ATTR 变量的第 7 位设置为 1。其中,SUBSTR 函数用于提取 ATTR 变量的第 7 位,'1'B 是一个二进制字面量,表示二进制数 0000 0000 0000 0001。
因此,ATTR 变量的值可以用以下代码计算:
```
DCL ATTR BIT(18);
ATTR = BITAND(ATTR, BITNOT(X2'40')) + X2'40';
```
解释一下上面的代码:首先,使用 BITNOT(X2'40') 函数生成一个所有位都是 1,只有第 7 位是 0 的掩码。然后,使用 BITAND 函数将 ATTR 变量与掩码进行按位与操作,将 ATTR 变量的第 7 位置为 0。最后,使用加法运算符将 ATTR 变量的第 7 位置为 1。完成这些操作后,ATTR 变量的值就是 131072。
相关问题
DCL ATTR BIT(18); SUBSTR(WK_OFF->ATTR,7,1) = '1'B ; 为什么值是 00 08 00 00
根据 PL/1 中 BIT(n) 的定义,BIT(18) 表示一个长度为 18 位的位字符串(bit string),可以存储 0 或 1。在代码中,SUBSTR(WK_OFF->ATTR, 7, 1) = '1'B 语句设置 ATTR 变量的第 7 位为 1。
由于 BIT(n) 类型的变量在内存中以字节为单位存储,因此 BIT(18) 类型的变量需要占用 3 个字节。在大多数计算机中,一个字节由 8 个二进制位组成,因此 BIT(18) 类型的变量需要占用 24 个二进制位。
在这个例子中,ATTR 变量的值为 00 08 00 00。这个值是由 3 个字节组成的,从左到右分别是:
- 00:表示二进制数 0000 0000。
- 08:表示二进制数 0000 1000。
- 00:表示二进制数 0000 0000。
由于我们只设置了 ATTR 变量的第 7 位为 1,因此其他二进制位的值都是 0。因此,ATTR 变量的值在二进制下可以表示为 0000 0000 0000 1000 0000 0000,即二进制数 32768,也可以表示为十六进制数 0x8000。
DCL 1 SYM_TAB BASED(SYM_PTR), 2 ATTR BIT(18), SUBSTR(WK_OFF->ATTR,7,1) = '1'B ;赋值语句 运行完后, ATTR 的码值 变成多少了?
根据赋值语句可以知道,如果WK_OFF->ATTR的第7个字符为'1',则将ATTR的第18位设置为1。因为ATTR是一个18位的二进制位字段,所以在赋值之前,ATTR的所有位都是0。如果WK_OFF->ATTR的第7个字符为'1',则将第18位设置为1,否则不做任何修改。因此,如果WK_OFF->ATTR的第7个字符为'1',赋值语句执行后ATTR的码值将变为二进制的100000000000000000,即十进制的262144。如果WK_OFF->ATTR的第7个字符不为'1',ATTR的码值仍然为0。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)