我是靠谱客的博主 传统自行车,最近开发中收集的这篇文章主要介绍c语言源码补码机器码的定义,机器码的基本概念和几种进制的转换问题,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

直接进入正题,介绍下相关的几个概念,学计算机的都应该知道,

1.机器码:就是二进制数。

2.无符号数:不考虑正负号的机器数。

3.有符号数:考虑正负号的机器数。 注:有符号数通常规定最高位为符号位,并用0表示正,用1表示的是负余下的就是数值

下面介绍下机器码中的原码,反码,补码。

1.原码:

定义机器数本身就是源码表示法,例如:经典的例子(125),原码表示为

01111101,这里最高位是符号位。

2.反码:正数的反码就是原码,负数的反码就是将符号位以外的各位取反,得到例如:(125)原 = (125)反 =

01111101,(-125)原 = 11111101,(-125)反 = 10000010.

3.补码:正数的补码还是它的原码,负数的补码是将它的反码的末位加1,例:(125)补 = (125)原 =

01111101,(-125)原 = 11111101,(-125)反 =

10000010,(-125) = 1000011

总结上面的:正数的原码,反码,补码都相同。负数中反码除符号外取反,补码在反码末位加1即可。

下面来讲解今天遇到的问题:

《十进制负数转化成八进制和十六进制》

以网上提供 -167转换为例子,笔者在换算的时候出现了各种各样的情况,不过是第一次计算也是正常的,

先把-617用补码表示,然后再转换成八进制和十六进制(补码),下面的是网上摘下的记录:

二进制转为 8

进制,用 3 位二进制位编为一组(不够左侧补 0),然后从右边开始每三位按如下方式替换:

000 - 0, 001 - 1, 010 - 2, 011 - 3,

100 - 4, 101 - 5, 110 - 6, 111 - 7.

二进制转为16进制,用4位二进制位编为一组(不够左侧补0),然后从右边开始每四位按下方式替换

0000 - 0, 0001 - 1, 0010 - 2, 0011 - 3

0100 - 4, 0101 - 5, 0110 - 6, 0111 - 7

1000 - 8, 1001 - 9, 1010 - A, 1011 - B

1100 - C, 1101 - D, 1110 - E, 1111 - F

Turbo

C中整数是16位的,617的二进制是00000010 01101001,取反加1得到-617的补码为11111101

10010111,每3位转成1个八进制数

1111110110010111 --二进制

1 7 6 6 2 7 --八进制

最后

以上就是传统自行车为你收集整理的c语言源码补码机器码的定义,机器码的基本概念和几种进制的转换问题的全部内容,希望文章能够帮你解决c语言源码补码机器码的定义,机器码的基本概念和几种进制的转换问题所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(40)

评论列表共有 0 条评论

立即
投稿
返回
顶部