SheepDev

数值、单位与位

标志值 13 启用了哪些设置?

使用工具

日志 flags=13 本身不能说明哪些选项启用。位标志把分配给 1、2、4、8 等位权的选项组合进一个整数。这里固定八位无符号,依次读取、检查、设置、清除;功能名只是示例,不修改实际权限。

13 有三个置位

按八位读取设置值
13 = 8 + 4 + 1
00001101
       1 → option A
     100 → option C
    1000 → option D

进制转换将十进制 13 转为 1101,补齐八位是 00001101,位权 1、4、8 为 1。若从 bit 0 编号,就是 bit 0、2、3。值为 4 的标志不一定是所谓第四位,需区分权值与位置。

二进制不能告诉你每位功能名。另一应用中的 13 可能完全不同。应先取得 A=1、B=2、C=4、D=8 等正式映射。位运算用于核对,不会从未知数值推断意义或安全性。

用 AND 取出关心的位

已置位与未置位的情况
13 AND 4 = 4
13 AND 2 = 0
13 AND 6 = 4

选择宽度 8、无符号、十进制输入和 AND。13 与 4 得 4,说明该位存在;第二值改为 2 得 0。AND 返回共同为 1 的位组成的整数,不是 true/false 文本。

多个标志一起查时,非零不代表全部启用。掩码 6 组合 2 和 4,13 AND 6 为 4,只存在其中一部分。全部成立需结果等于掩码,有任一个则只需非零。应先明确判断问题。

OR 用于置位,不等于加法

同一标志设置两次
13 OR 2 = 15
15 OR 2 = 15
13 + 2 = 15
15 + 2 = 17

启用标志 2 时,13 OR 2 得 15,再 OR 2 仍为 15。加法第一次恰好相同,但 15+2=17,进位改变其他位。因此不能用加法代替可重复执行的置位。

更新真实设置前,比较原值、掩码和结果。二进制应保留 1、4、8,仅新增 2。该页面只计算,不会改服务器配置或设备权限。

XOR 是翻转,不是始终清除

翻转与清除的区别
13 XOR 4 = 9
9 XOR 4 = 13
13 AND 251 = 9
9 AND 251 = 9
251 = 11111011 (8 bits)

13 XOR 4 得 9,看似清除了 4;但 9 XOR 4 又得 13。XOR 翻转指定位,原本关闭就会开启。明确设为 OFF 与切换当前状态不同。

八位下清除 4 的掩码为 11111011,即 251。13 AND 251 和 9 AND 251 都得 9,重复清除仍保持关闭。掩码依赖位宽,别把 251 原样套进不同宽度。

结果应同时保留位宽和符号条件

本文采用八位无符号。NOT 依赖位宽,同一位串按有符号解释可能显示负数。分享时附位宽、符号、输入进制、运算和越界策略,便于复现。

最后还要判断 15 是否为允许的组合。可表示的位串可能包含互斥选项或保留位。计算成功不证明应用接受,应回原系统规范确认组合和应用步骤。

参考资料

使用工具

指南 →