第4次作业

位运算:

# 1. 先拿到补码(Python int 无限位宽,负数以“-”号体现,内部补码存储)
a = 56        # 0b 0011 1000
b = -18       # 原码 1001 0010 → 反码 1110 1101 → 补码 1110 1110

print('56  =', bin(a))
print('-18 =', bin(b))   # Python 输出负数为 -0b10010,下面手动补码演示

# --- 计算 ---
print('~56  =', ~a, bin(~a))            # 按位取反  -57
print('~-18 =', ~b, bin(~b))            # 按位取反   17

print('56 & -18  =', a & b, bin(a & b))  # 0011 1000 & 1110 1110 = 0010 1000 -> 40
print('56 | -18  =', a | b, bin(a | b))  # 0011 1000 | 1110 1110 = 1111 1110 -> -2
print('56 ^ -18  =', a ^ b, bin(a ^ b))  # 0011 1000 ^ 1110 1110 = 1101 0110 -> -42

# 左移右移
print('56 << 2 =', a << 2, bin(a << 2))  # 0011 1000 << 2 = 1110 0000 -> 224
print('56 >> 2 =', a >> 2, bin(a >> 2))  # 0011 1000 >> 2 = 0000 1110 -> 14
print('-18 << 2 =', b << 2, bin(b << 2)) # -18 << 2 = -72
print('-18 >> 2 =', b >> 2, bin(b >> 2)) # -18 >> 2 = -5 (算术右移补符号位)

运行图

装饰器

import functools
import datetime
import os

def add_timestamp(func):
    """装饰器:把当前系统时间追加到文件末尾,并打印到控制台最后一行"""
    @functools.wraps(func)
    def wrapper(file_path, content, *args, **kwargs):
        # 先执行原“写”操作
        func(file_path, content, *args, **kwargs)
        # 追加时间戳
        timestamp = '\n# ' + datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S') + '\n'
        with open(file_path, 'a', encoding='utf-8') as f:
            f.write(timestamp)
        print('[装饰器] 已追加时间戳:', timestamp.strip())
    return wrapper

@add_timestamp
def write_file(file_path, content):
    with open(file_path, 'w', encoding='utf-8') as f:
        f.write(content)

# --- 测试 ---
if __name__ == '__main__':
    fname = 'demo.txt'
    write_file(fname, 'hello world')
    # 查看结果
    with open(fname, encoding='utf-8') as f:
        print('文件内容:\n', f.read())

运行图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值