Title: 整型数数据在内存中的存储 · Issue #133 · codcodog/Blog · GitHub
Open Graph Title: 整型数数据在内存中的存储 · Issue #133 · codcodog/Blog
X Title: 整型数数据在内存中的存储 · Issue #133 · codcodog/Blog
Description: 整型数数据在内存中的存储 基本概念 「机器数」指一个数在计算机中的二进制表示形式. 「机器数」是带符号的,在计算机用一个数的最高位存放符号,正数为0,负数为1. 将带符号位的机器数对应的真正数值称为机器数的「真值」. 例如:0000 0001 的「真值」=> +000 0001 = +1,1000 0001 的「真值」=> -000 0001 = –1 「原码」:将十进制数直接翻译为二进制数. 「反码」:原码的符号位不变,其他位按位取反. 「补码」:反码+1. 对于正数...
Open Graph Description: 整型数数据在内存中的存储 基本概念 「机器数」指一个数在计算机中的二进制表示形式. 「机器数」是带符号的,在计算机用一个数的最高位存放符号,正数为0,负数为1. 将带符号位的机器数对应的真正数值称为机器数的「真值」. 例如:0000 0001 的「真值」=> +000 0001 = +1,1000 0001 的「真值」=> -000 0001 = –1 「原码」:将十进制数直接翻译为二进制数...
X Description: 整型数数据在内存中的存储 基本概念 「机器数」指一个数在计算机中的二进制表示形式. 「机器数」是带符号的,在计算机用一个数的最高位存放符号,正数为0,负数为1. 将带符号位的机器数对应的真正数值称为机器数的「真值」. 例如:0000 0001 的「真值」=> +000 0001 = +1,1000 0001 的「真值」=> -000 0001 = –1 「原码」:将十进制数直接翻...
Opengraph URL: https://github.com/codcodog/Blog/issues/133
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"整型数数据在内存中的存储","articleBody":"整型数数据在内存中的存储\r\n=========================\r\n\r\n### 基本概念\r\n\r\n「机器数」指一个数在计算机中的二进制表示形式.\r\n\r\n「机器数」是带符号的,在计算机用一个数的最高位存放符号,正数为0,负数为1.\r\n\r\n将带符号位的机器数对应的真正数值称为机器数的「真值」.\r\n\u003e 例如:0000 0001 的「真值」=\u003e +000 0001 = +1,1000 0001 的「真值」=\u003e -000 0001 = –1\r\n\r\n「原码」:将十进制数直接翻译为二进制数. \r\n「反码」:原码的符号位不变,其他位按位取反. \r\n「补码」:反码+1.\r\n\r\n对于正数来说,反码补码都与原码相同. \r\n而对于负数来说,则符合上述所说的规则:\r\n- 原码,将十进制数字直接翻译为二进制\r\n- 反码,原码的符号位不变,其他位按位取反\r\n- 补码:反码+1\r\n\r\n\u003e 反码和补码设计出来就是为了表示负数的,使计算机更好的去计算.\r\n\r\n\r\n对于整型来说,整型在内存中实际上是以「补码」的形式进行存储的.\r\n\u003e 两个整数使用补码进行运算的时候,就可以不关心它们的符号位了, \r\n\u003e 将它们的位直接相加就好了,就能得到正确的结果.\r\n\r\n\r\n### 整数转换问题\r\n\r\n整数从高位转低位,例如:\r\n\r\n```golang\r\na := int16(256)\r\nb := int8(a)\r\nfmt.Println(b) // 输出:0\r\n```\r\n\r\n256 int16 在内存存储为:`0000 0001 0000 0000` \r\n转为 int8 的时候,直接截取8位为:`0000 0000`\r\n\r\n\r\n整数从低位负数转高位正数,例如:\r\n\r\n```golang\r\nc := int8(-8)\r\nd := uint16(c)\r\nfmt.Println(d) // 输出:65528\r\n```\r\n\r\n-8 int8 在内存存储为:`1111 1000` \r\n转为 uint16 的时候,为:`1111 1111 1111 1000`\r\n\u003e 这里为什么不是 `0000 0000 1111 1000`? \r\n\u003e 从低位负数转高位正数时,剩余不够的位数会置1,所以是 `1111 1111 1111 1000` \r\n\u003e 暂时没有找到资料为什么会这样转换\r\n\r\n","author":{"url":"https://github.com/codcodog","@type":"Person","name":"codcodog"},"datePublished":"2022-07-20T13:56:10.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":0},"url":"https://github.com/133/Blog/issues/133"}
| route-pattern | /_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format) |
| route-controller | voltron_issues_fragments |
| route-action | issue_layout |
| fetch-nonce | v2:ed31efee-b156-7299-ac9e-82df502dc1c6 |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | 9BBE:21F6EA:228FDB:2EA494:6A4C6C8F |
| html-safe-nonce | fcb25efd86e6c3a4b1822a184ad3145dd13d3284d78f154b9474d7852babac87 |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiI5QkJFOjIxRjZFQToyMjhGREI6MkVBNDk0OjZBNEM2QzhGIiwidmlzaXRvcl9pZCI6IjU2MDMyOTg0OTE3MzQxOTEyNDciLCJyZWdpb25fZWRnZSI6ImlhZCIsInJlZ2lvbl9yZW5kZXIiOiJpYWQifQ== |
| visitor-hmac | d906d07ba0bc5bc09ce9e493b75fe75850e67f3f2fc5996649941bb85691b655 |
| hovercard-subject-tag | issue:1311161555 |
| github-keyboard-shortcuts | repository,issues,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/codcodog/Blog/133/issue_layout |
| twitter:image | https://opengraph.githubassets.com/5aa22ca3c63c055db55255194e3b774c1b46aa18a019b2567b77119d989b941a/codcodog/Blog/issues/133 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/5aa22ca3c63c055db55255194e3b774c1b46aa18a019b2567b77119d989b941a/codcodog/Blog/issues/133 |
| og:image:alt | 整型数数据在内存中的存储 基本概念 「机器数」指一个数在计算机中的二进制表示形式. 「机器数」是带符号的,在计算机用一个数的最高位存放符号,正数为0,负数为1. 将带符号位的机器数对应的真正数值称为机器数的「真值」. 例如:0000 0001 的「真值」=> +000 0001 = +1,1000 0001 的「真值」=> -000 0001 = –1 「原码」:将十进制数直接翻译为二进制数... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | codcodog |
| hostname | github.com |
| expected-hostname | github.com |
| None | 3d11bb817438277de2a940854450e83a7d32b6aeb5014e9e6b00a6423900251c |
| turbo-cache-control | no-preview |
| go-import | github.com/codcodog/Blog git https://github.com/codcodog/Blog.git |
| octolytics-dimension-user_id | 18098145 |
| octolytics-dimension-user_login | codcodog |
| octolytics-dimension-repository_id | 75478736 |
| octolytics-dimension-repository_nwo | codcodog/Blog |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 75478736 |
| octolytics-dimension-repository_network_root_nwo | codcodog/Blog |
| turbo-body-classes | logged-out env-production page-responsive |
| disable-turbo | false |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | 14099438da5379150f15a2892474c7c7e6c0e55e |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width