Lesson 54 Sticky …

作者在家中独自制作肉馅饼时,接连被电话和邮递员的到访打断,导致手上、电话及门把手上都沾满了面糊。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Lesson 54 Sticky fingers 粘糊的手指

First listen and then answer the question.
    听录音,然后回答以下问题。
    What two interruptions did the writer have?

原文

    After breakfast, sent the children to school and then went to the shops. It was still early when returned home. The children were at school, my husband was at work and the house was quiet. So decided to make some meat pies. In short time was busy mixing butter and flour and my hands were soon covered with sticky pastry. At exactly that moment, the telephone rang.Nothing could have been more annoying. picked up the receiver between two sticky fingers and was dismayed when recognized the voice of Helen Bates. It took me ten minutes to persuade her to ring back later. At last hung up the receiver. What mess! There was pastry on my fingers, on the telephone, and on the doorknobs. had no sooner got back to the kitchen than the doorbell rang loud enough to wake the dead. This time it was the postman and he wanted me to sign for a registered letter!

 

 

New words and expressions 生词和短语

sticky  adj. 粘的
finger  n. 手指
pie  n. 馅饼
mix  v. 混合,拌和
pastry  n. 面糊

annoying  adj. 恼人的
receiver  n. 电话的话筒
dismay  v. 失望,泄气
recognize  v. 认出,听出
persuade  v. 说服,劝说

mess  n. 乱七八糟
doorknob  n. 门把手
sign  v. 签字
register  v. 挂号邮寄

 

 

参考译文

    早饭后,我送孩子们上学,然后就去了商店。我回到家时,时间还早。孩子们在上学,我丈夫在上班,家里清静得很。于是我决定做些肉馅饼。不一会儿我就忙着调拌起了黄油和面粉,很快我的手上就沾满了粘粘的面糊。恰恰在此时,电话铃响了。没有什么能比这更烦人了。我用两个沾满面糊的手指捏起了话筒。当听出是海伦.贝茨的声音时,非常丧气。我用了10分钟的时间才说服她过会儿再来电话。我终于挂上了话筒。真是糟糕透了!我的手指上、电话机上以及门的把手上,都沾上了面糊。我刚回到厨房,门铃又响了起来,响声足以把死人唤醒。这次是邮递员,他要我签收一封挂号信!

 

 

<think>我们要求计算文件权限掩码表达式:0777 & ~022 这是一个按位与运算,其中0777和022都是八进制数。 步骤: 1. 将两个数转换为二进制表示(因为按位操作通常在二进制上进行)。 2. 对022取反(即~022),得到一个新的二进制数。 3. 将0777的二进制与上一步得到的二进制数进行按位与操作。 4. 将结果转换回八进制表示。 注意:在Linux文件权限掩码中,通常使用八进制表示,每个数字代表3个二进制位(分别对应读、写、执行权限)。 计算过程: 首先,将八进制数转换为二进制: 022(八进制)的二进制表示: 0 2 2 (八进制) 000 010 010 (二进制,每个八进制数字转换为3位二进制) 所以022的二进制是:000010010(共9位,但通常我们考虑9位权限,即三组:用户、组、其他) 但是,注意022实际上是一个8进制数,它等价于二进制000000010010(12位)?实际上,在权限掩码中,我们通常用4位八进制数(12位二进制)表示,但最前面的一位用于特殊权限(setuid, setgid, sticky bit),而这里我们只考虑9位(基本权限)也是可以的。不过,为了完整,我们按照12位(4位八进制)来考虑,因为022就是3位八进制,可以扩展为4位八进制(即0022)来考虑。 不过,在计算中,我们通常使用9位权限(3位八进制)或12位(4位八进制)。但这里0777是4位八进制(实际上是3位,因为第一位0表示没有特殊权限)?实际上0777就是3位八进制,但为了与022对齐,我们可以将022视为0022(即4位八进制,前导0)。 但是,在按位取反时,我们需要考虑数据的位数。在C语言中,整数通常是32位,但为了计算权限掩码,我们通常只关心低9位(基本权限)或低12位(包括特殊权限)。但题目中给出的是0777和022,都是八进制数,我们按9位或12位计算都可以,因为高位都是0。 为了简单,我们按9位计算(即只考虑最低9位)。 步骤1:计算022的二进制(9位) 022(八进制) -> 000 010 010(二进制) -> 000010010(9位二进制) 步骤2:对022取反(按9位取反) 取反操作:将每一位二进制取反(0变1,1变0) 000010010 取反得到 111101101(9位) 步骤3:计算0777的二进制(9位) 0777(八进制) -> 111 111 111(二进制) -> 111111111(9位) 步骤4:按位与:0777 & ~022 -> 111111111 & 111101101 按位与规则:两个位都为1时,结果才为1。 111111111 & 111101101 --------- 111101101 步骤5:将二进制结果转换为八进制 将二进制111101101(9位)分成三组:111 101 101 111 -> 7 101 -> 5 101 -> 5 所以结果是755(八进制) 因此,0777 & ~022 的结果是0755(八进制),通常我们写作755。 验证: 在Linux中,umask用于设置默认创建文件时的权限掩码,它通过屏蔽某些位来设置权限。例如,umask 022表示屏蔽掉组和其他的写权限,所以创建文件时默认权限就是777-022=755(目录)或666-022=644(文件)。这里我们直接计算按位与,得到755,符合。 结论:0777 & ~022 = 0755(八进制) 用数学表达式表示: $$ 0777_{(8)} \;\&\; \sim 022_{(8)} = 0755_{(8)} $$ 注意:在C语言中,按位取反操作符~会将操作数的所有位(包括高位)取反,因此如果使用32位整数,结果会是一个很大的负数。但在权限掩码计算中,我们通常只关心低9位(或12位),所以使用掩码0xFFF(12位)来截取低位。但在这个问题中,我们只考虑9位,所以结果就是755。 另外,在计算中,我们也可以直接使用八进制数进行运算: 0777 & ~022 首先,022的按位取反(在32位系统中)会得到0xffffffdd(十六进制),然后与0777(即0x1FF)相与,得到0x1FF & 0xffffffdd = 0x1DD(十六进制),然后将0x1DD转换为八进制:1DD(十六进制)= 0735(八进制)?这显然不对。 这是因为我们忽略了位数。在32位系统中,022实际上是0x00000012(十六进制),取反后是0xffffffed(十六进制),然后与0x000001ff(即0777)相与,得到0x000001ed(十六进制),即0x1ed。将0x1ed转换为二进制:0001 1110 1101,然后按三位一组(从低位开始):01 111 011 01(这里需要从低位开始每三位一组,不够补0)?实际上,十六进制1ed的二进制是:000111101101(12位)。分成三组(每组3位)从高到低:111(7)、101(5)、101(5)?不对,12位分成四组(每组3位)应该是:000 111 101 101,然后转换为八进制:0 7 5 5,即0755(八进制)。所以结果还是755。 因此,无论我们按9位还是32位计算(只要最后截取低9位或12位),结果都是0755。 所以最终答案是:0755(八进制),通常表示为755。 相关问题: 1. 在Linux中,文件权限掩码(umask)是如何影响新创建文件的权限的? 2. 如何设置Linux系统的默认umask值? 3. 特殊权限(如setuid、setgid和sticky bit)在权限掩码中如何表示? 4. 文件权限的八进制表示法与符号表示法(如rwxr-xr-x)如何转换?</think>### 计算文件权限掩码表达式:$0777\ \&\ \sim022$ #### 步骤分解: 1. **将八进制转换为二进制**: - $0777_{(8)} = 111\ 111\ 111_{(2)}$(9位二进制) - $022_{(8)} = 000\ 010\ 010_{(2)}$(9位二进制) 2. **计算按位取反 $\sim022$**: - $\sim000010010_{(2)} = 111101101_{(2)}$(取反后结果) 3. **执行按位与运算 $0777\ \&\ \sim022$**: ``` 111 111 111 (0777) & 111 101 101 (~022) ---------------- 111 101 101 (结果二进制) ``` 4. **将二进制转换为八进制**: - $111_{(2)} = 7_{(8)}$ - $101_{(2)} = 5_{(8)}$ - $101_{(2)} = 5_{(8)}$ - 最终结果:$755_{(8)}$ #### 数学表达式: $$ (111111111_2) \ \&\ (111101101_2) = 111101101_2 = 755_8 $$ #### 权限含义: - **用户(owner)**:$7_{(8)} = \text{rwx}$ (读+写+执行) - **组(group)**:$5_{(8)} = \text{r-x}$ (读+执行) - **其他(other)**:$5_{(8)} = \text{r-x}$ (读+执行) - 对应符号表示:`rwxr-xr-x` > 注:在 Linux 权限系统中,该掩码表示保留所有者的完整权限,但移除组和其他用户的写权限[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值