byte b = (byte)130; 结果为-126,为什么?

本文详细介绍了如何将十进制数130转换为其在计算机中的补码表示形式。首先将其转换为二进制,然后扩展到4字节长度,并通过计算原码、反码最终得到补码,展示了一次完整的转换过程。

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

数据130默认是int类型的十进制数据
第一步十进制的130转换成二进制数据
1 0 0 0 0 0 1 0
第二步130是int类型是占4个字节的,所以在内存的表现形式是
00000000  00000000  00000000  10000010
做了截取后的结果为
10000010
通过观察最高位符号位是1,这是一个负数,因为在计算机中所有的数据都是以补码的形式出现的所以要算它的补码
原码:1 0000010    原码变反码,最高位符号位不变,其他数值位1变0,0变1得反码
反码:1 1111101    反码变补码就是反码加1得
补码;1 1111110
最终的看到的结果就是
1     1111110最高为是符号位不运算,数值为转化为十进制是64+32+16+8+4+2=126符号位负
所以为-126
root@VM-20-12-ubuntu:/srs-6.0-d2/trunk# ./objs/srs -c conf/rtmp_srt.conf [2025-07-17 14:16:50.852][INFO][429193][7e9jv004] XCORE-SRS/6.0.85(Hang) [2025-07-17 14:16:50.852][INFO][429193][7e9jv004] config parse complete [2025-07-17 14:16:50.852][INFO][429193][7e9jv004] write log to console [2025-07-17 14:16:50.852][INFO][429193][7e9jv004] SRS/6.0.85(Hang), MIT [2025-07-17 14:16:50.852][INFO][429193][7e9jv004] authors: Winlin<winlin@vip.126.com> ZhaoWenjie<zhaowenjie@tal.com> ShiWei<shiwei05@kuaishou.com> XiaoZhihong<hondaxiao@tencent.com> WuPengqiang<pengqiang.wpq@alibaba-inc.com> XiaLixin<xialixin@kanzhun.com> LiPeng<mozhan.lp@alibaba-inc.com> ChenGuanghua<jinxue.cgh@alibaba-inc.com> ChenHaibo<nmgchenhaibo@foxmail.com> ZhangJunqin<chundonglinlin@126.com> and https://github.com/ossrs/srs/blob/develop/trunk/AUTHORS.md#contributors [2025-07-17 14:16:50.852][INFO][429193][7e9jv004] cwd=/srs-6.0-d2/trunk, work_dir=./, build: 2025-07-17 12:18:20, configure: , uname: Linux VM-20-12-ubuntu 5.4.0-192-generic #212-Ubuntu SMP Fri Jul 5 09:47:39 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux, osx: 0, env: 0, pkg: [2025-07-17 14:16:50.852][INFO][429193][7e9jv004] configure detail: --prefix=/usr/local/srs --config=conf/srs.conf --osx=off --hls=on --hds=off --dvr=on --ssl=on --https=on --ssl-1-0=off --ssl-local=off --sys-ssl=off --transcode=on --ingest=on --stat=on --http-callback=on --http-server=on --stream-converter=on --http-api=on --utest=off --srt=on --rtc=on --h265=off --gb28181=off --simulator=off --cxx11=on --cxx14=off --backtrace=on --ffmpeg-fit=on --ffmpeg-opus=off --nasm=on --srtp-nasm=on --clean=on --gperf=off --gmc=off --gmd=off --gmp=off --gcp=off --gprof=off --static=off --shared-st=off --shared-srt=off --shared-ffmpeg=off --log-verbose=off --log-info=off --log-trace=on --log-level_v2=on --gcov=off --apm=off --debug=off --debug-stats=off --cross-build=off --sanitizer=on --sanitizer-static=off --sanitizer-log=off --cygwin64=off --single-thread=off --generic-linux=off --cc=gcc --cxx=g++ --ar=ar --ld=ld --randlib=randlib [2025-07-17 14:16:50.852][INFO][429193][7e9jv004] srs checking config... [2025-07-17 14:16:50.853][INFO][429193][7e9jv004] ips, iface[0] eth0 ipv4 0x11043 10.0.20.12, iface[1] eth0 ipv6 0x11043 fe80::5054:ff:fec6:792a%eth0 [2025-07-17 14:16:50.853][INFO][429193][7e9jv004] devices, intranet eth0 10.0.20.12, intranet eth0 fe80::5054:ff:fec6:792a%eth0 [2025-07-17 14:16:50.853][WARN][429193][7e9jv004][22] stats network use index=0, ip=10.0.20.12, ifname=eth0 [2025-07-17 14:16:50.853][WARN][429193][7e9jv004][22] stats disk not configed, disk iops disabled. [2025-07-17 14:16:50.853][INFO][429193][7e9jv004] write log to console [2025-07-17 14:16:50.854][ERROR][429193][7e9jv004][22] Failed, code=1023(ConfigInvalid)(Configuration is invalid) : check config : check normal : illegal vhost.proxy thread [429193][7e9jv004]: do_main() [./src/main/srs_main_server.cpp:225][errno=22] thread [429193][7e9jv004]: check_config() [./src/app/srs_app_config.cpp:2242][errno=22] thread [429193][7e9jv004]: check_normal_config() [./src/app/srs_app_config.cpp:2536][errno=22](Invalid argument) ================================================================= ==429193==ERROR: LeakSanitizer: detected memory leaks Direct leak of 72 byte(s) in 1 object(s) allocated from: #0 0x55580b82dc87 in operator new(unsigned long) (/srs-6.0-d2/trunk/objs/srs+0x4afc87) #1 0x55580b9ee24e in discover_network_iface(ifaddrs*, std::vector<SrsIPAddress*, std::allocator<SrsIPAddress*> >&, std::__cxx11::basic_stringstream<char, std::char_traits<char>, std::allocator<char> >&, std::__cxx11::basic_stringstream<char, std::char_traits<char>, std::allocator<char> >&, bool, bool) src/protocol/srs_protocol_utility.cpp:703 #2 0x55580b9eef1e in retrieve_local_ips() src/protocol/srs_protocol_utility.cpp:760 #3 0x55580b9ef9e8 in srs_get_local_ips() src/protocol/srs_protocol_utility.cpp:817 #4 0x55580bb78ed5 in SrsConfig::check_normal_config() src/app/srs_app_config.cpp:2424 #5 0x55580bb75e5f in SrsConfig::check_config() src/app/srs_app_config.cpp:2241 #6 0x55580beccb2a in do_main(int, char**, char**) src/main/srs_main_server.cpp:224 #7 0x55580beccea7 in main src/main/srs_main_server.cpp:256 #8 0x7f8136c8a082 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x24082) Direct leak of 72 byte(s) in 1 object(s) allocated from: #0 0x55580b82dc87 in operator new(unsigned long) (/srs-6.0-d2/trunk/objs/srs+0x4afc87) #1 0x55580b9ee24e in discover_network_iface(ifaddrs*, std::vector<SrsIPAddress*, std::allocator<SrsIPAddress*> >&, std::__cxx11::basic_stringstream<char, std::char_traits<char>, std::allocator<char> >&, std::__cxx11::basic_stringstream<char, std::char_traits<char>, std::allocator<char> >&, bool, bool) src/protocol/srs_protocol_utility.cpp:703 #2 0x55580b9ef220 in retrieve_local_ips() src/protocol/srs_protocol_utility.cpp:781 #3 0x55580b9ef9e8 in srs_get_local_ips() src/protocol/srs_protocol_utility.cpp:817 #4 0x55580bb78ed5 in SrsConfig::check_normal_config() src/app/srs_app_config.cpp:2424 #5 0x55580bb75e5f in SrsConfig::check_config() src/app/srs_app_config.cpp:2241 #6 0x55580beccb2a in do_main(int, char**, char**) src/main/srs_main_server.cpp:224 #7 0x55580beccea7 in main src/main/srs_main_server.cpp:256 #8 0x7f8136c8a082 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x24082) Indirect leak of 31 byte(s) in 1 object(s) allocated from: #0 0x55580b82dc87 in operator new(unsigned long) (/srs-6.0-d2/trunk/objs/srs+0x4afc87) #1 0x7f813710729e in std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_assign(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) (/lib/x86_64-linux-gnu/libstdc++.so.6+0x14329e) SUMMARY: AddressSanitizer: 175 byte(s) leaked in 3 allocation(s).
最新发布
07-18
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值