前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >理论实践基础|1024程序员节有奖征文(一)

理论实践基础|1024程序员节有奖征文(一)

原创
作者头像
Aion
修改2024-10-20 22:48:23
780
修改2024-10-20 22:48:23
举报

引言

在二进制构筑的计算机世界里,1024是技术人最熟悉的“整数”。今年也是AI活跃的第二年,有幸参与今年腾讯云开发者社区陪伴各位小伙伴度过第7个1024程序员节!在过去这段时间里,我们感受到程序员圈里面临着前所未有的生机——文生视频大模型Sora、音频能力强大的GPT-4o的发布、……更可喜可贺的是诺贝尔物理学奖、化学奖颁给“AI”。

关于1024这个数值

1024这个数值在多个领域和上下文中都有特殊的意义或应用,记住这些默认值可以让我们快速记忆转换我们思维,使得我们更快速的在工作中使用。

  • 计算机科学

1024是2的10次方(2^10),在计算机科学中经常被用作数据大小的单位转换基础。例如,1KB(千字节)等于1024字节,1MB(兆字节)等于1024KB,以此类推(尽管在实际硬件和存储设备的容量标注中,由于历史原因和方便计算,有时也使用1000作为换算基数,但这在软件层面的数据大小计算中并不常见)。

  • 计算机内存

地址空间经常以2的幂次方来划分,因为这样可以简化内存管理和寻址过程。1024作为2的10次方,在这个上下文中是一个重要的数值。

  • 数学和数值分析

1024可以被视为一个接近1000但又是2的幂次方的数,这在某些需要同时考虑二进制和十进制表示的场合中很有用。

  • 编程和算法

1024有时被用作数组大小、缓冲区大小或循环次数的默认值,特别是在需要处理大量数据或进行大量计算的场合,有些在默认值时默认为1024或者1024的倍数。例如我们有些时候在一个默认值写 param = 1024 * 1000

  • 二进制编码

1024的二进制表示是10000000000(11位二进制数),在二进制编码、数据传输或存储中可能具有特定的意义或应用。

等等,很多地方都会使用到1024或者1024的倍数,为了更快捷的使用到这些数字或者我们使用AI来实现这个功能。

Python 语言获取算法代码

为了更好的使用AI,我们在文心一言中输入我们想要获取或者说我们想要AI来帮助我们处理的事情或者代码工作,再从其他方式获取这些数值。例如在文心一言中输入 “快速生成2的1-64次方的值”,然后AI会提供给我们一些代码示例并给予我们解释。

这是一个Python语言的代码,为了验证这段代码的准确性,我们将其丢在Python语言环境中实验下。

代码语言:javascript
复制
>>>
>>> powers_of_two = [2**i for i in range(1, 65)]
>>> for index, value in enumerate(powers_of_two, start=1):
    ...     print(f"2^{index} = {value}")
...

2^1 = 2
2^2 = 4
2^3 = 8
2^4 = 16
2^5 = 32
2^6 = 64
2^7 = 128
2^8 = 256
2^9 = 512
2^10 = 1024
2^11 = 2048
2^12 = 4096
2^13 = 8192
2^14 = 16384
2^15 = 32768
2^16 = 65536
2^17 = 131072
2^18 = 262144
2^19 = 524288
2^20 = 1048576
2^21 = 2097152
2^22 = 4194304
2^23 = 8388608
2^24 = 16777216
2^25 = 33554432
2^26 = 67108864
2^27 = 134217728
2^28 = 268435456
2^29 = 536870912
2^30 = 1073741824
2^31 = 2147483648
2^32 = 4294967296
2^33 = 8589934592
2^34 = 17179869184
2^35 = 34359738368
2^36 = 68719476736
2^37 = 137438953472
2^38 = 274877906944
2^39 = 549755813888
2^40 = 1099511627776
2^41 = 2199023255552
2^42 = 4398046511104
2^43 = 8796093022208
2^44 = 17592186044416
2^45 = 35184372088832
2^46 = 70368744177664
2^47 = 140737488355328
2^48 = 281474976710656
2^49 = 562949953421312
2^50 = 1125899906842624
2^51 = 2251799813685248
2^52 = 4503599627370496
2^53 = 9007199254740992
2^54 = 18014398509481984
2^55 = 36028797018963968
2^56 = 72057594037927936
2^57 = 144115188075855872
2^58 = 288230376151711744
2^59 = 576460752303423488
2^60 = 1152921504606846976
2^61 = 2305843009213693952
2^62 = 4611686018427387904
2^63 = 9223372036854775808
2^64 = 18446744073709551616
>>>
实验结果
实验结果

参考一个附录A:2的次方表(1~64次方) ,我们发现AI提供给我们的代码可行性为100%。

其他语言的算法代码

为了验证AI的更准确性,我们希望他能提供给我一份Java的代码,其他的语言希望有兴趣的可以试试。

代码语言:javascript
复制
public class PowersOfTwo {  
    public static void main(String[] args) {  
        // 使用for循环生成2的1到63次方的值(因为2^64超出了long的范围)  
        for (int i = 1; i < 64; i++) { // 注意这里i < 64而不是i <= 64  
            long result = 1L << i; // 使用位运算左移来更高效地计算2的i次方  
            System.out.println("2^" + i + " = " + result); // 打印结果  
        }  
        // 可以选择性地打印或处理2^64的情况,但注意它超出了long的范围  
        System.out.println("2^64 (exceeds long range) would be a very large number.");  
    }  
使用AI获取到AI的代码
使用AI获取到AI的代码
实验结果
实验结果

这个的确也是可用的,而且不仅可用,而且还提供了潜在的bug以及解决方案。由于Java的long类型可以表示的最大值是2^63−1,所以当i等于64时,结果将是一个超出long类型范围的正数,并且会被表示为负数(这是因为在Java中,long类型使用64位二进制补码表示,其中最高位是符号位)。为了避免这种情况,你可以在打印结果之前检查它是否超出了long类型的范围,并相应地处理它(例如,通过添加一些注释来说明这个值已经超出了可表示的范围)。

1024 的用途和功能

这里我举一个例子就好了,也是我们常用的MySQL数据库,从配置中获取一些参数。例如获取参数binlog_row_event_max_sizebinlog_cache_sizeconnection_memory_limit 的值,他们都是在1024的基础上或者做了倍数计算。

代码语言:javascript
复制
-- -- 方式一
-- binlog基于行事件的最大限制
SHOW VARIABLES LIKE 'binlog_row_event_max_size';
-- binlog缓存
SHOW VARIABLES LIKE 'binlog_cache_size';
-- 连接内存限制大小
SHOW VARIABLES LIKE 'connection_memory_limit';

-- -- 方式二
SELECT * FROM `performance_schema`.GLOBAL_VARIABLES 
WHERE variable_name IN (
  'binlog_row_event_max_size', 
  'binlog_cache_size', 
  'connection_memory_limit'
);

当然,还有一些其他的参数配置,例如 MySQL 中每个表最多包含 4096 个字段(不过实际上的字段数量限制比这个值更小);例如Excel工作表对于Office Excel 2003及以下版本,最大列数为256列,对于Office Excel 2007及以上版本,最大列数增加至16384列。我们工作中过时时刻刻离不开1024的,也离不开这个节日赋予我们的做好1024的事情。

总结

在学习中、实践上利用AI结合实际工作,是提升编程能力、理解业务逻辑的最佳方式。随着AI、智能制造等新兴技术的兴起,我们应该保持开放的心态,主动学习这些技术。在工作之余可以多多利AI来做一些其他项目,这些项目可以是应用程序、网站或工具,站在巨人的肩膀上,主要是学习如何解决某个具体问题的思想和放。

附录A:2的次方表(1~64次方)

代码语言:javascript
复制
2的1次方:2
2的2次方:4
2的3次方:8
2的4次方:16
2的5次方:32
2的6次方:64
2的7次方:128
2的8次方:256
2的9次方:512
2的10次方:1024
2的11次方:2048
2的12次方:4096
2的13次方:8192
2的14次方:16384
2的15次方:32768
2的16次方:65536
2的17次方:131072
2的18次方:262144
2的19次方:524288
2的20次方:1048576
2的21次方:2097152
2的22次方:4194304
2的23次方:8388608
2的24次方:16777216
2的25次方:33554432
2的26次方:67108864
2的27次方:134217728
2的28次方:268435456
2的29次方:536870912
2的30次方:1073741824
2的31次方:2147483648
2的32次方:4294967296(小于10^10)
2的33次方:8589934592
2的34次方:17179869184
2的35次方:34359738368
2的36次方:68719476736
2的37次方:137438953472
2的38次方:274877906944
2的39次方:549755813888
2的40次方:1099511627776
2的41次方:2199023255552
2的42次方:4398046511104
2的43次方:8796093022208
2的44次方:17592186044416
2的45次方:35184372088832
2的46次方:70368744177664
2的47次方:140737488355328
2的48次方:281474976710656
2的49次方:562949953421312
2的50次方:1125899906842624
2的51次方:2251799813685248
2的52次方:4503599627370496
2的53次方:9007199254740992
2的54次方:18014398509481984
2的55次方:36028797018963968
2的56次方:72057594037927936
2的57次方:144115188075855872
2的58次方:288230376151711744
2的59次方:576460752303423488
2的60次方:1152921504606846976
2的61次方:2305843009213693952
2的62次方:4611686018427387904
2的63次方:9223372036854775808
2的64次方:18446744073709551616


🎉 我是您的老朋友 Aion ,希望三连支持:欢迎 ❤️关注、👍点赞、👉收藏三连,支持一下博主~

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 引言
  • 关于1024这个数值
  • Python 语言获取算法代码
  • 其他语言的算法代码
  • 1024 的用途和功能
  • 总结
  • 附录A:2的次方表(1~64次方)
相关产品与服务
云数据库 MySQL
腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档