为什么有些底层项目里会充满这种奇怪的代码?

合集 · 直观理解计算机技术【CoreDumped】 (68)

  1. 11:03
    代码中指定变量类型为何如此重要?
  2. 13:46
    栈为何如此之快?
  3. 17:53
    堆为何如此之慢?
  4. 19:56
    动态数组的内部机制(ArrayList VS LinkedList)
  5. 15:37
    探索计算机并发与多任务处理的历史
  6. 12:54
    晶体管是如何运行代码的?
  7. 16:12
    晶体管是如何记忆数据的?
  8. 18:47
    制作一个CPU来运行程序
  9. 11:23
    计算机如何将字符串转换为数字
  10. 17:18
    动态随机存取存储器(DRAM)的工作原理
  11. 16:05
    计算机处理器是如何运行条件和循环的?
  12. 6:51
    一个程序不是一个进程
  13. 14:52
    深入理解进程,如何进行上下文切换?计算机科学中最深刻和最成功的想法之一。
  14. 20:20
    处理器内部的单个位如何保护操作系统的完整性?
  15. 13:14
    计算的心跳:时钟如何推动 CPU 前进?
  16. 14:22
    英语原声版-计算的心跳:时钟如何推动 CPU 前进?
  17. 14:15
    (英语原声)进程间通信:共享内存或发送消息
  18. 12:29
    (中文配音)进程间通信:共享内存或发送消息
  19. 14:59
    (中文配音)为什么单核处理器需要线程?
  20. 16:07
    (英语原声)为什么单核处理器需要线程?
  21. 9:26
    (中文配音)多核系统上的线程
  22. 11:27
    (英语原声)多核系统上的线程
  23. 11:52
    (中文配音)为什么应用程序是特定于操作系统的?
  24. 13:09
    (英语原声)为什么应用程序是特定于操作系统的?
  25. 13:15
    (英语原声)硬件如何在多任务处理中协助软件?
  26. 11:29
    (中文配音)硬件如何在多任务处理中协助软件?
  27. 20:34
    链表的一个实际应用
  28. 45:02
    让你的电脑运行更流畅的奇妙算法
  29. 43:38
    (流畅中文配音)让你的电脑运行更流畅的奇妙算法
  30. 19:41
    (原声双语字幕)当程序调用 sleep() 时会发生什么?
  31. 17:57
    (流畅中文配音)当程序调用 sleep() 时会发生什么?
  32. 20:40
    这个简单算法驱动了真正的解释器:Pratt Parsing
  33. 18:19
    (双语字幕)编程中最难以捉摸的Bug:竞态条件
  34. 19:23
    (流畅中文配音)编程中最难以捉摸的Bug:竞态条件
  35. 16:02
    (中文配音)阻止内存攻击的底层电路
  36. 14:51
    (英语原声)阻止内存攻击的底层电路
  37. 18:04
    为什么有些项目会使用多种编程语言?
  38. 19:32
    为什么有些项目会使用多种编程语言?
  39. 17:15
    别再杀进程了!让 Ctrl+C 变成“喵”……(用信号实现)
  40. 19:23
    别再杀进程了!让 Ctrl+C 变成“喵”...(用信号实现)
  41. 19:05
    80 年代避免竞态条件的算法(以及它为何失败)
  42. 19:43
    80 年代避免竞态条件的算法(以及它为何失败)
  43. 22:10
    CPU如何与众多不同设备交互?
  44. 23:52
    (中文配音)CPU如何与众多不同设备交互?
  45. 14:04
    (中文配音)你每天都在用的奇特CPU操作
  46. 13:04
    你每天都在用的奇特CPU操作
  47. 18:04
    (中文配音)历史如何塑造了我们今天仍在使用的编程术语?
  48. 17:42
    (英语原声)历史如何塑造了我们今天仍在使用的编程术语?
  49. 16:41
    为什么有些底层项目里会充满这种奇怪的代码?
  50. 16:39
    (中文配音)为什么有些底层项目里会充满这种奇怪的代码?
  51. 21:35
    编译与解释代码如何共处同一程序中?
  52. 21:30
    (英语原声)编译与解释代码如何共处同一程序中?
  53. 17:09
    【双语字幕】Core Dumped 常见问题的集中回答
  54. 13:36
    【双语字幕】90年代的设计决策阻碍了Python并行化
  55. 12:01
    【中文配音】90年代的设计决策阻碍了Python并行化
  56. 17:51
    Linux创建进程的奇怪方式
  57. 18:14
    【中文配音】Linux创建进程的奇怪方式
  58. 19:49
    CPU如何运行函数?
  59. 19:38
    【中文配音】CPU如何运行函数?
  60. 17:15
    没有人解释的问题:内核的边界在哪里?
  61. 19:36
    【英语原声】没有人解释的问题:内核的边界在哪里?
  62. 35:49
    硬件如何让线程问题不再那么棘手?
  63. 19:47
    为什么在macOS、Windows和Linux上安装应用程序如此不同?
  64. 24:00
    游戏公司真的能破坏你的电脑吗?
  65. 10:43
    一个视频说透“架构”:为什么你的程序换个CPU就可能跑不了?
  66. 14:45
    CPU如何执行有符号和无符号运算?
  67. 19:11
    简单指令, 奇妙算法
  68. 9:26
    当CPU遇到它不认识的指令,会发生什么?😱【底层原理】
Description
https://www.youtube.com/watch?v=z7wVUfnm7M0
视频总结:
本视频深入讲解了计算机中的位运算基础知识,重点对比了常规算术运算与位运算的区别。常规运算(如加法)以整个“字”为单位,结果受整个数值影响;而位运算虽然也以字为单位处理,但每个比特位独立计算,不受其他位影响。视频详细介绍了六种基本位运算:与(AND)、或(OR)、异或(XOR)、非(NOT)以及位移操作(左移、右移、循环移位),并通过实例演示了如何利用这些操作高效地操控单个比特。

视频还探讨了位运算在实际开发中的应用,特别是在内存受限的场景下(如嵌入式系统、旧式游戏开发),通过“位打包”技术将多个布尔值压缩进一个字节,显著节省存储空间。此外,位运算在现代计算中仍广泛用于压缩算法、加密、哈希等底层技术中。最后,视频指出底层开发中常见的十六进制掩码代码,其实就是位运算的实际应用。

标签:
位运算 比特操作 位打包 嵌入式开发 内存优化 十六进制掩码 计算机基础 布尔值压缩 位移操作 异或 与或非 二进制运算 编程技巧 数据压缩 加密算法 哈希函数 低级编程 CPU字长 进位机制 旧式游戏开发

Comments

不肯吸水的偏铝酸钠 2025-11-28

与此同时的现代游戏:拿JSON序列化稀疏数组然后再重新压缩

♥ 310 ↩ 71

66ccff 2025-11-28

我通常手写机器码完成大型项目

♥ 254 ↩ 21

ca2didi 2025-11-27

特别热衷于以位为单位做数据操作,就是同事经常抱怨看不明白我的想法[doge]

♥ 227 ↩ 42

比力币 2025-12-04

底层程序员:10010110 高级语言程序员:这啥啊看不懂 高级语言程序员:*使用1MB的json存了1kB信息量*

♥ 123 ↩ 2

Wenyouli 2025-11-27

这东西烦死了,下位机传递给我的浮点数跟加密了一样。要通过运算才能得出结果。[笑哭]

♥ 108 ↩ 5

秋风醉我 2025-11-28

以前一个字节必须要每个位都充分利用,自从公司开始用h7系列之后,日志都是用json格式的字符串发送了[doge]

♥ 92 ↩ 1

bili_1851542855 2025-11-29

自从有了老板思维后,管你这个那个的,别太离谱,能跑不出错的就是好代码,稍微加点硬件也无所谓[doge]

♥ 79 ↩ 4

T弋C石马 2025-11-27

我以为是日常操作,原来这个也能科普[笑哭]

♥ 68 ↩ 8

洛必达yyds 2025-11-27

嵌入式最熟的一集)

♥ 47

想那么多干嘛头会疼的 2025-12-01

现代编程,可读性优先吧。一般我让AI实现代码都会尽量不要让它使用位运算(貌似AI自己也不会用)。除了嵌入式编程或者算法经常用到位运算,桌面应用开发用位运算纯属给自己添堵。你要说节省开销,硬件向下兼容,那现在5G带宽和CPU迭代有啥必要(政府军工例外,基础建设工程确实要考虑最低限度开销)。如果是为了炫技,那不如直接用汇编语言[笑哭]

♥ 38 ↩ 10

孙子兵法8760 2025-11-29

甚至Linux命令行也玩这个: chmod 755 some_dir 其中,755=0b111 101 101

♥ 31 ↩ 2

啊巴阿巴1145 2025-11-28

c/c++的位域本身就能按bit分配字段,用着就跟普通字段一样。反而是现代语言要写繁琐的位运算

♥ 26

ListProcessing 2025-12-12

好的语义和可读性可以节省我的时间, 好的性能要花费我的时间 [猫屋敷梨梨_吃瓜]

♥ 26

Tango117 2025-11-28

纯粹是上古优化魔法,基本上属于钻木取火的八种方法,在现代可以说基本上毫无价值 现代高级语言编译器功能极端强大,硬件算力,存储贷款,io吞吐量都是非常离谱的 会卡顿的基本上只有网络问题,超大规模的io以及单纯的编码错误

♥ 18 ↩ 12

Ebonkoi 2025-11-28

可读性--

♥ 18 ↩ 3

电獭Official 2025-12-15

你的高层封装方法可以打一个inline标记让编译器帮你优化,从而兼顾可读性和运行效率。但是相当多的库开发者就是喜欢把magic number和面条位运算塞成一坨[笑哭]

♥ 18

MadTom 2025-11-29

做i2c通讯的路过,要想通信可靠,速度就得慢,但慢了又满足不了及时性,那咋办呢,只能压缩了,拿时间数据说,6个byte存下完整时间还能富裕几个bit [笑哭]

♥ 12

火之魂魄 2025-11-27

百般武艺,此乃位运算

♥ 9

Louis翔 2025-12-01

你们C语言没有专门的轮子处理这种吗[doge][doge][doge]

♥ 9 ↩ 1